2010-06-11 145 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