2012-05-17 77 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\\/]+$"; 
            ^   ^^
相关问题