我需要定義一個接受字母數字和以下特殊字符的正則表達式: @#$%& *()-_ +] [';:?。,!用於字母數字和特殊字符的正則表達式
我想出:
string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![]\s\\/]+$";
但這似乎並不奏效。有人可以讓我知道什麼是缺少的?
我需要定義一個接受字母數字和以下特殊字符的正則表達式: @#$%& *()-_ +] [';:?。,!用於字母數字和特殊字符的正則表達式
我想出:
string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![]\s\\/]+$";
但這似乎並不奏效。有人可以讓我知道什麼是缺少的?
其中一些字符需要轉義(*,+等)。最簡單的方法是簡單地逃離他們都:
string pattern = @"[a-zA-Z0-9\@\#\$\%\&\*\(\)\-\_\+\]\[\'\;\:\?\.\,\!]+$";
'*'和'+'在字符集內是明確的。儘管我通常會將它們作爲好習慣逃脫,但這不是必要的。 – Ryan
我會說逃脫一切只會造成不可知性。 – Bergi
@minitech,真的,謝謝澄清。 Bergi,你有一個觀點,但我寧願*總是*逃避任何可能被解釋爲特殊角色的角色,即使他們不在[]中,因此不太熟悉正則表達式的人不會必須考慮它是否意味着特殊的東西。取決於你所從事的團隊,你可以更嚴格地處理應該逃脫的事情。 – carlosfigueira
當定義一個字符類,你需要逃跑中右括號]
,就像「^
」,「-
」和逃逸序列\
本身,你已經做了正確的處理:
string pattern = @"[[email protected]#$%&*+\-_(),+':;?.,![\]\s\\/]+$";
^ ^^
你的代碼只匹配ASCII字符(這可能是你的場景需要的)。如果您還想要允許Unicode字母,例如'é',則應該使用'\ w'而不是'a-zA-Z0-9_'。 – Douglas