2013-03-03 205 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);