特殊字符的正则表达式?

时间:2013-03-03 13:56:30

标签: c# regex

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

此表达式与 ^ _ 字符不匹配。我该怎么做才能匹配这些价值观?

还有一件事是,如果 TextBox1.Text 字符串值大于10,则最后一个字符串值(第11个字符串值)应该匹配。

2 个答案:

答案 0 :(得分:3)

请注意,^括在方括号中时具有特殊含义。它意味着匹配除了字符类中指定的所有内容,基本上是'[]'

如果您想匹配"^""_",请将插入符号(^)置于开头括号之后的其他位置,使用重复来限制字符长度:

[\W_]

这将确保整个字符串中的字符为10。

或者你使用斜杠"\^"来逃避它。

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

答案 1 :(得分:1)

您的问题是A-z

这匹配所有ASCII字母AZ然后是Za之间的字符(其中包含{{1} }和^,然后是_a之间的所有ASCII字母。这意味着z^将与您的正则表达式(以及您在正则表达式中包含的逗号和空格)不匹配。

为了澄清,您的正则表达式也可以写成

_

你可能想要

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