2012-03-28 8 views
-1

Я создал это регулярное выражение для проверки имен:Regex для минимального количества символов

^[a-zA-Z0-9\s\-\,]+.\*?$ 

Есть ли способ добавить минимальное количество символов?

Я знаю, что мы можем использовать {x,}, но я не могу заставить его работать.

+3

Re:« Я знаю, что мы можем использовать {x,}, но я не могу заставить его работать »: Можете ли вы Опубликовать то, что вы пробовали? Потому что нет причин, по которым это не должно работать, если вы не используете механизм регулярных выражений, который не поддерживает эту нотацию. – ruakh

ответ

4

{x,} следует использовать вместо + здесь ..

^[a-zA-Z0-9\s,-]{5,} 

Но это означало бы, «по крайней мере 5 символов в начале совпадают с символа класса, а потом что-нибудь ...

Если написать это (почти ваши оригинальные - только с {5} вместо +):

^[a-zA-Z0-9\s\-\,]{5,}.\*?$ 

Это означает, что «по крайней мере 5 символов начало совпадают с символом класса, затем любым ОДНОМ символом, а затем необязательно звездочкой, и это должно быть его окончанием »

+0

Hm. Не уверен, что я правильно понял проблему;), поэтому, если вы хотите обеспечить ** общую ** длину не менее x символов, следуйте совету F.J's;) – poncha

3

Используйте lookahead в начале регулярного выражения, чтобы убедиться, что общее количество символов - это минимум ваш минимум. Например, если ваш минимум составляет 8 символов:

^(?=.{8,})[a-zA-Z0-9\s\-,]+.\*?$ 

Кроме того, вам не нужно скрывать запятую.

+1

@ code-gijoe это тоже должно работать на Java, но зависит от механизма regexp, если поддерживаются поддерживаемые функции –