我的正则表达式有什么问题

时间:2011-11-25 14:51:36

标签: c# regex

我写了Regex以检查字符串是否由9 digits组成,如下所示,但即使我的字符串为false,也总是返回123456789 }。

if (Regex.IsMatch(strSSN, " ^\\d{9}$"))

任何人都可以告诉我什么是错的,如果有更好的人提供我的话......我实现的是字符串应该只有numeric data而长度应该是=9

4 个答案:

答案 0 :(得分:5)

空格在正则表达式中很重要(当然,在字符串的开头之前,您无法匹配空格字符)。删除它,一切都应该没问题:

if (Regex.IsMatch(strSSN, "^\\d{9}$"))

此外,您通常希望在C#中使用逐字符串作为正则表达式,因此您不必将反斜杠加倍,但这只是一个方便,而不是您的问题的原因:

if (Regex.IsMatch(strSSN, @"^\d{9}$"))

答案 1 :(得分:0)

这应该有效

^\d{9}$

希望有所帮助

答案 2 :(得分:0)

"^之间有一个空格。它应该是:

if (Regex.IsMatch(strSSN, "^\\d{9}$"))

答案 3 :(得分:0)

它可能是你模式开头的空间吗?这似乎很奇怪,一个空间而不是一个固定在线的开头的数字。

这可以给你你想要的东西:

if (Regex.IsMatch(strSSN, "^\\d{9}$"))