Конкретное регулярное выражение Java - PullRequest
5 голосов
/ 23 февраля 2010

Как мне проверить, что строковый ввод в Java имеет формат:

хххх-хххх-хххх-хххх

где x это цифра 0..9?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 февраля 2010

Для начала, это отличный источник регулярных выражений: http://www.regular -expressions.info . Посетите его, ткните и поиграйте. Кроме того, java.util.Pattern API имеет краткий обзор шаблонов регулярных выражений.

Теперь вернемся к вашему вопросу: вы хотите сопоставить четыре последовательные группы из четырех цифр, разделенных дефисом. Одна группа из 4 цифр в регулярном выражении может быть представлена ​​как

\d{4}

Четыре из тех, которые разделены дефисом, могут быть представлены как:

\d{4}-\d{4}-\d{4}-\d{4}

Чтобы сделать его короче, вы также можете представить одну группу из четырех цифр и трех последовательных групп из четырех цифр с префиксом дефиса:

\d{4}(-\d{4}){3}

Теперь в Java вы можете использовать String#matches(), чтобы проверить, соответствует ли строка заданному регулярному выражению.

boolean matches = value.matches("\\d{4}(-\\d{4}){3}");

Обратите внимание, что я избежал обратной косой черты \ другой обратной косой чертой \, потому что обратная косая черта имеет особое значение в String. Для представления фактической обратной косой черты вы должны использовать \\.

3 голосов
/ 23 февраля 2010

Строковые объекты в Java имеют метод matches, который может проверять регулярное выражение:

 myString.matches("^\\d{4}(-\\d{4}){3}$")

Это конкретное выражение проверяет четыре цифры, а затем три раза (дефис и четыре цифры), таким образом представляя требуемый формат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...