2010-06-21 4 views
1

Я использовал следующее регулярное выражение в ASP.NET и Javascript:Регулярное выражение неправильно соответствует

[a-zA-ZöäüÖÄÜß0-9]{1}[a-zA-ZöäüÖÄÜß0-9_.\-]{2,14}[a-zA-ZöäüÖÄÜß0-9.!]{1} 

Теперь я переходе на ASP.NET MVC, и я проверяю свой код. Я считаю, что

'test' 
%test 

Существуют также матчи. Это, вероятно, потому, что не вся строка должна быть сопоставлена. И тест внутри «теста» является допустимым совпадением.

Как мне нужно изменить RegEx, чтобы соответствовать полной строки, а не только его части?

ответ

4

Если вы пытаетесь соответствовать целой строке, используйте ^ и $ якоря:

^[a-zA-ZöäüÖÄÜß0-9][a-zA-ZöäüÖÄÜß0-9_.\-]{2,14}[a-zA-ZöäüÖÄÜß0-9.!]$ 

Примечание: Я также упал {1}, так как это совершенно излишнее, как квантор по умолчанию любого символа или символу класс соответствует только одному вхождению. Вы также можете сократить свои классы символов с помощью модификатора без учета регистра. (/i в Javascript).

+0

Спасибо, это работает. – Sparhawk

+0

Что это за все эти бессмысленные '{1}' ы, которые появились недавно?!? Я думаю, что я видел больше всего на этой неделе, чем за многие годы, когда я использовал регулярное выражение. : S –

1
^[a-zA-ZöäüÖÄÜß0-9]{1}[a-zA-ZöäüÖÄÜß0-9_.\-]{2,14}[a-zA-ZöäüÖÄÜß0-9.!]{1}$ 

где ^ совпадает с началом и $ конца строки (текст).

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