[A-Z]Пример названий регионов: NYC, TOK, LON, SYN и т.д.
Поле ввода регионов должно содержать один или более регион, отделенный друг от друга запятыми без пробелов. Пример корректного ввода:
- NYC
- NYC,TOK,LON,SYN
Требуется написать регулярное выражение для проверки ввода. Это регулярное выражение будет следующим:
^([A-Z]{3},)*([A-Z]{3}$)
Наш ввод можно разделить на две группы. Одна группа - это когда в поле ввода всего лишь один регион. Пример такого ввода: NYC. Регулярное выражение для проверки следующее:
^[A-Z]{3}$Вторая группа: список регионов, разделенный запятыми. Пример ввода: NYC,TOK,LON,SYN. Составим регулярку для проверки такого ввода.
Такую строку (NYC,TOK,LON,SYN) можно представить следующим образом: сначала идет 1 или больше регионов, после которых ставится запятая. Последний регион прибавляется в конце. После него не ставится запятая. Например, для строки NYC,TOK,LON,SYN это выглядит следующим образом: сначала идут три региона, после которых ставится запятая: NYC,TOK,LON,. Затем добавляется регион, после которого запятая не стоит: SYN.
Для такой строки NYC,TOK,LON,SYN регулярное выражение будет следующим:
([A-Z]{3},)+Для строки SYN регулярка такова:
[A-Z]{3}Теперь совместим эти две регулярки, и получим:
^([A-Z]{3},)+([A-Z]{3}$). Но это выражение требует, чтобы регионов, после которых идет запятая, было как минимум одна штука. Вспоминаем, что есть символ
*, который значит 0 или более вхождений паттерна. Ставим * вместо +, и получаем:
^([A-Z]{3},)*([A-Z]{3}$)что нас вполне устраивает. Ну и, разумеется, добавляем символы начала и конца строки.
Комментариев нет:
Отправить комментарий