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

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

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

4

2 回答 2

3

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

如果要匹配"^"and "_",请将插入符号放在左(^)括号之后的另一个位置,如下所示,使用重复来限制字符长度:

[\W_]

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

或者你使用 slash 转义它"\^"

string Val = Regex.Replace(TextBox1.Text, @"[\W_]", string.Empty);
于 2013-03-03T14:02:28.890 回答
1

你的问题是A-z

这将匹配所有 ASCII 字母A然后是位于和之间的字符其中包含Z,然后是和之间的所有 ASCII 字母。这意味着并且不会与您的正则表达式匹配(以及您在正则表达式中包含的逗号和空格)。Za^_az^_

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

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

你可能想要

string Val = Regex.Replace(TextBox1.Text, @"[^a-zA-Z0-9]", string.Empty);
于 2013-03-03T15:06:58.867 回答