给定searchString = "23423asdfa-''"
这个正则表达式应该评估为false,但它不会!有什么想法吗?
Regex rgx = new Regex(@"[\w-]*");
rgx.IsMatch(searchString)
答案 0 :(得分:9)
这是因为你没有约束它来匹配整个字符串。因此,允许考虑字符串子集的匹配。字符串的一个非常大的子集匹配数据,因此正则表达式返回true。
请尝试以下操作以强制它匹配整个输入。
Regex rgx = new Regex(@"^[\w-]*$");
rgx.IsMatch(searchString)
答案 1 :(得分:2)
你需要锚定你的表达。如果不这样做,那么如果输入的任何子字符串匹配,则认为正则表达式匹配成功。将正则表达式更改为“^ [\ w - ] * $”,其中^和$将分别匹配字符串的开头和结尾。