Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

Архив блога

вторник, 3 мая 2011 г.

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

По работе возникла необходимость написать регулярное выражение для проверки списка регионов. Регион - это последовательность из трех прописных букв английского алфавита. Т.е.
[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}$)
что нас вполне устраивает. Ну и, разумеется, добавляем символы начала и конца строки.

Комментариев нет:

Отправить комментарий

Постоянные читатели