3

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

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

2 回答 2

10

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

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

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

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

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

于 2013-03-01T11:05:20.440 回答
0

您的正则表达式[0-9a-zA-Z]检查输入字符串中的任何字母数字字符。由于它在您的输入字符串中找到 a、d、a、s、d,因此它返回 true。
您需要做的是在您的正则表达式中放置开始和结束锚点。新的正则表达式如下所示:

^[0-9a-zA-Z]+$
于 2013-03-01T11:08:43.490 回答