2013-11-06 1 views
0

У меня есть регулярное выражение:Регулярное выражение слишком общий

"(al|sf|sa|sc|nrc|nrc form|doe|doe f|lsi|doe form psd f|doe al f)?[\\s\\-\\.]*[\\d]{3,6}[\\s\\-\\.]*[\\w]{1,4}" 

Я не хочу чисто числовые строки, такие как «2001», чтобы пройти этот тест, но «2001» проходит для этого регулярного выражения. Зачем? Как я могу это исправить?

+0

Нужна ли первая группа необязательной? – pobrelkey

ответ

2

В ? и * части являются необязательными, поэтому только необходимой частью регулярного выражения является

\d{3,6}\w{1,4} 

\w включает в себя цифру, поэтому он проходит поскольку 2001 год составляет 3 \d и 1 \w.

1

Вы можете добавить отрицательный предпросмотр так:

(?!^\\d+$) 

 Смежные вопросы

  • Нет связанных вопросов^_^