正则表达式错误匹配

时间:2010-06-21 10:29:56

标签: regex

我一直在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

也是比赛。 这可能是因为不需要匹配整个字符串。 'test'中的测试是有效的匹配。

如何更改RegEx以匹配整个字符串而不仅仅是部分字符串?

2 个答案:

答案 0 :(得分:4)

如果您要匹配整个字符串,请使用^$个锚点:

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

注意:我也删除了{1},因为它完全是冗余的量词,默认情况下,任何字符或字符类只匹配单次出现。您可能还希望使用不区分大小写的修饰符缩短字符类。 (Javascript中的/i)。

答案 1 :(得分:1)

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

其中^与开头匹配,$与行尾(文字)匹配。