Для начала, это отличный источник регулярных выражений: 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
. Для представления фактической обратной косой черты вы должны использовать \\
.