2010-06-11 103 views
1

我试图剔除那些字符串中的所有的东西都没有,所以我创建的正则表达式正则表达式失败

private static Regex _NonAlphaChars = new Regex("[^[A-Za-z0-9 ]]", RegexOptions.Compiled); 

但是一个字母数字或空间,当我打电话_NonAlphaChars.Replace("Scott,", "");它返回"Scott,"

我在做什么错,它不符合,

+0

的问题是,你不能嵌套字符类这样的。因此,这个正则表达式实际上被解析为:否定集中的任何字符[[[A-Za-z0-9]](其中第二个[[实际上是类的一部分],后面跟着单个']' – Johrn 2010-06-11 16:51:13

回答

4

你做了一些有趣的双括号。改变它只是

[^A-Za-z0-9 ] 

删除原始的表达成The Regex Coach解释您正则表达式为:

正则表达式是由表达式“的序列[[^ A-ZA-Z0-9] '和字符']'。

对于相反,我写的替代的解释是:

正则表达式是表示一切,但从字符“A”的字符“Z”的字符的范围中的字符类,从字符'a'到字符'z'的字符范围,从字符'0'到字符'9'的字符范围以及字符''。

+0

感谢您的链接到正则表达式教练!我一直试图在www.regular-expressions.info上进行研究,找出我的表情。 – 2010-06-11 16:49:45

5
private static Regex _NonAlphaChars = 
    new Regex("[^A-Za-z0-9 ]", RegexOptions.Compiled); 
0

试试这个

[^A-Za-z0-9\s] 

\ W