我需要定义一个接受字母数字和以下特殊字符的正则表达式: @#$%& *()-_ +] [';:?。,!用于字母数字和特殊字符的正则表达式
我想出:
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