与任何数字或字母或短划线匹配的正则表达式

时间:2010-08-05 15:29:46

标签: c# .net regex

给定searchString = "23423asdfa-''"

这个正则表达式应该评估为false,但它不会!有什么想法吗?

Regex rgx = new Regex(@"[\w-]*");
rgx.IsMatch(searchString)

2 个答案:

答案 0 :(得分:9)

这是因为你没有约束它来匹配整个字符串。因此,允许考虑字符串子集的匹配。字符串的一个非常大的子集匹配数据,因此正则表达式返回true。

请尝试以下操作以强制它匹配整个输入。

Regex rgx = new Regex(@"^[\w-]*$");
rgx.IsMatch(searchString)

答案 1 :(得分:2)

你需要锚定你的表达。如果不这样做,那么如果输入的任何子字符串匹配,则认为正则表达式匹配成功。将正则表达式更改为“^ [\ w - ] * $”,其中^和$将分别匹配字符串的开头和结尾。