Регулярное выражение для проверки ввода

Я пытаюсь выучить регулярные выражения и надеялся, что кто-то сможет мне помочь. Было бы важно, если кто-то может помочь мне придумать регулярное выражение, чтобы подтвердить, что вход должен иметь форму

Graph: XY5, YZ4, ST7

Каждая часть, такая как XY5, представляет собой край на графике, а число представляет собой вес края. Может быть любое число таких ребер.

Это то, что у меня есть до сих пор. Вероятно, это неверно

"^Graph:\\s{1}[A-ZA-Z\\d,\\s]+"
3 ответа

Это может быть то, что вы ищете:

/^Graph: (?:[A-Z]{2}\d(?:$|, ?))+/

Смотрите здесь в действии: http://regexr.com?309av

Здесь объяснение того, что делает регулярное выражение (скриншот от RegexBuddy, который, вероятно, лучший инструмент для вас, если вы пытаетесь изучить регулярные выражения):


Вы должны объяснить свой формат ввода немного лучше. Это может сделать это из единственного примера, который у меня есть, и того, что вы сказали. Это не позволяет графу быть пустым, что может быть или не быть частью ваших требований.

"^Graph:(\s\w{2}\d+,?)+"

объяснить:

^Graph: будет охватывать начало строки

(\s\w{2}\d+,?)+

\s - пространство

\w{2} соответствует ровно 2 буквенно-цифровым символам (подсказка: вы можете сделать это лучше!)

\d+ соответствует 1 или более цифрам, так как я предполагаю, что ребро может иметь длину в две цифры (например, 10)

,? возможно, запятая. (подсказка: вы можете сделать это лучше, так как это не потребует запятой между каждой записью !, может быть, с помощью символа или и конца разделителя строк!)

Я намеренно оставил некоторые возможности для улучшения, потому что, если вы подумаете о некоторых из них по своему усмотрению, вы достигнете своей цели - стать лучше с регулярными выражениями.


Попробуй это

/^Graph:(\s+[A-Z][A-Z]\d+)+$/

licensed under cc by-sa 3.0 with attribution.