2012-05-17 75 views
1

我需要定義一個接受字母數字和以下特殊字符的正則表達式: @#$%& *()-_ +] [';:?。,!用於字母數字和特殊字符的正則表達式

我想出:

string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![]\s\\/]+$"; 

但這似乎並不奏效。有人可以讓我知道什麼是缺少的?

+0

你的代碼只匹配ASCII字符(這可能是你的場景需要的)。如果您還想要允許Unicode字母,例如'é',則應該使用'\ w'而不是'a-zA-Z0-9_'。 – Douglas

回答

7

中間需要[]進行轉義*:

\[\] 

你也可能要錨定一個^字符串的開始。


*也許只是]但我喜歡爲平衡兩者都做。

+0

你的編輯在1秒內擊敗我的評論達到同樣效果。 +1 –

+0

+1好答案。關於主播,但是,這取決於他的需求。 OP應該注意到'^'匹配開始和'$'匹配結束,然後他可以使用他需要的。 – SimpleVar

+0

如何將char限制添加到6-19個字符? – Sreekumar

3

其中一些字符需要轉義(*,+等)。最簡單的方法是簡單地逃離他們都:

string pattern = @"[a-zA-Z0-9\@\#\$\%\&\*\(\)\-\_\+\]\[\'\;\:\?\.\,\!]+$"; 
+2

'*'和'+'在字符集內是明確的。儘管我通常會將它們作爲好習慣逃脫,但這不是必要的。 – Ryan

+0

我會說逃脫一切只會造成不可知性。 – Bergi

+0

@minitech,真的,謝謝澄清。 Bergi,你有一個觀點,但我寧願*總是*逃避任何可能被解釋爲特殊角色的角色,即使他們不在[]中,因此不太熟悉正則表達式的人不會必須考慮它是否意味着特殊的東西。取決於你所從事的團隊,你可以更嚴格地處理應該逃脫的事情。 – carlosfigueira

5

當定義一個字符類,你需要逃跑中右括號],就像「^」,「-」和逃逸序列\本身,你已經做了正確的處理:

string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![\]\s\\/]+$"; 
            ^   ^^
相關問題