正则表达式匹配,但不应该

时间:2013-03-01 11:03:51

标签: regex asp-classic match

这是我的代码,用于检查是否只填写了字母数字字符,但是当我输入类似adasd @#$的内容时,它仍然匹配,我不明白为什么。知道如何解决这个问题吗?

Match Match = Regex.Match(value.ToString(), "[0-9a-zA-Z]");
                if (Match.Success)
                {
                    return true;
                }
                else
                {
                    return false;
                }   

2 个答案:

答案 0 :(得分:9)

您所拥有的内容与其中包含一个字母或数字的任何字符串相匹配。

您需要将锚点添加到字符串的开头和结尾(^$),以及+以允许多个字符:

"^[0-9a-zA-Z]+$"

这意味着“整个字符串必须由字母和数字组成”。

+还要求字符串中至少有一个字符。这可能是一件好事,但如果你想匹配空字符串,也可以将它改为*

答案 1 :(得分:0)

您的正则表达式[0-9a-zA-Z]检查输入字符串中的任何字母数字字符。由于它在输入字符串中找到a,d,a,s,d,因此返回true 你需要做的是在正则表达式中放置起始和结束enchors。新的正则表达式看起来像这样:

^[0-9a-zA-Z]+$