2010-06-21 54 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},因爲它是作爲一個量詞完全是多餘的,默認情況下,任何字符或類僅匹配單個事件。您可能還想使用不區分大小寫的修飾符來縮短角色類別。 (使用Javascript中的/i)。

+0

謝謝,它很好用。 – Sparhawk 2010-06-21 10:37:31

+0

這些最近出現的所有這些毫無意義的「{1}」是什麼?!?我認爲在過去的一週中我看到了比使用正則表達式多年的更多。 :S – 2010-06-22 19:15:12

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

其中^開始和$線(文本)的端部相匹配。