2016-09-20 3 views
2

Я новичок в Regex, я хочу проверить слова не менее 6 символов и максимум 30 и должен начинаться только с букв, но он может содержать цифры и подчеркивание, начиная со второй позиции. Я использовал этот шаблон, но он не удался в тестах.pattern of regex

String pattern = "^[A-Za-z][A-Za-z0-9_]*{6,30}$"; 
+2

Попробуйте удалить символ '*' после второго класса символов. У вас есть два квантора, и это не действительное регулярное выражение. –

ответ

6

Вы можете использовать это регулярное выражение:

String pattern = "^[A-Za-z][A-Za-z0-9_]{5,29}$"; 
  • Вы не должны использовать * до того диапазона квантора {5,29}.
  • Использование {5,29}, потому что 1 символ уже в начале.

Вы также можете использовать это сокращенное регулярное выражение:

String pattern = "^[A-Za-z]\\w{5,29}$"; 

Как \w (символ слова) является эквивалентом [A-Za-z0-9_].

+1

Я не думал об этом, спасибо –

+2

Кроме того, если использовать 'matches()', привязки '^' и '$' являются избыточными/ненужными. – Andreas