2013-03-03 156 views
1
string Val = Regex.Replace(TextBox1.Text, @"[^a-z, A-z, 0-9]", string.Empty); 

這種表達不^_匹配的字符。我應該怎麼做才能匹配這些值?特殊字符的正則表達式?

還有一件事是,如果TextBox1.Text字符串值大於10,最後一個字符串值(第11個字符串值)應該匹配。

+0

你有什麼要問究竟** ** .. – Anirudha 2013-03-03 14:00:50

+0

插入符你只需要用反斜槓'\ ^'作爲下面的代碼'_'來轉義,你不需要轉義它,我無法理解你最後一個關於字符串長度的問題,注意強調? – 2013-03-03 14:02:11

+0

此表達式@「[^ a-z,A-z,0-9]」將與^和_的所有其餘值相匹配。但我需要表達來匹配這兩個價值。 – 2013-03-03 14:04:23

回答

3

請注意,^在用方括號括起來時有特殊含義。它意味着匹配除了角色類中指定的所有內容,基本上是'[]'

如果你想匹配"^""_",把插入符(^)在其他位置比左括號像這樣後,使用重複限制字符長度:

[\W_] 

,將確保在人物整個字符串都是10.

或者您使用斜槓"\^"轉義它。

string Val = Regex.Replace(TextBox1.Text, @"[\W_]", string.Empty); 
+0

如果我使用這個表達式[^ \ w],那麼我就是結果。但我想限制字符長度。只有十個字符允許。我該怎麼辦 ? – 2013-03-03 14:21:15

+0

@ASHOKA檢查我的答案,我添加了字符限制。 – 2013-03-03 14:31:02

+0

@Kata:ASHOK故意使用否定字符類。他只是碰巧否定了比他想象的更多的角色。看到我的答案。 – 2013-03-03 15:30:39

1

您的問題是A-z

這符合所有ASCII字母A通過Z然後擺在Za之間(包含,除其他外,^_字符,然後az之間的所有ASCII字母。這意味着^_將不會與您的正則表達式匹配(以及您在正則表達式中包含的逗號和空格)。

爲了澄清,你的正則表達式也被寫成

[^a-zA-Z0-9\[\\\]^_` ,] 

你可能想

string Val = Regex.Replace(TextBox1.Text, @"[^a-zA-Z0-9]", string.Empty);