正则表达式匹配,但不应该(Regex matches but shouldn't)

2019-07-20 19:26发布

这是我的代码,检查是否有只填写字母数字字符,但是当我输入类似adasd @#$它仍然匹配,我不知道为什么。 任何想法如何解决这一问题?

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

Answer 1:

你有什么,它包含一个字母或数字介于它的任何字符串相匹配。

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

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

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

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



Answer 2:

您正则表达式[0-9a-zA-Z]检查在输入字符串中的任何字母数字字符。 既然找到了,d,A,S,d在你输入的字符串,它返回true。
你需要做的是什么地方开始和结束enchors在你的正则表达式。 新的正则表达式应该是这样的:

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


文章来源: Regex matches but shouldn't