2011-11-25 50 views
0

我写了一个Regex来检查字符串是否由9 digits组成,如下所示,但总是返回false即使我的字符串为123456789我的正则表达式有什么问题

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

任何一个可以告诉什么是错的,也若有更好的提供我..我所实现的是字符串应该只有numeric data和长度应=9

回答

5

空间上的正则表达式是显著(当然,你不能匹配空格字符之前字符串的开始)。删除它,一切都应该罚款:

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

此外,你一般要使用逐字字符串在C#中的正则表达式,所以你不必双倍的反斜杠,但是这仅仅是为了方便,而不是原因您的问题:

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

谢谢'蒂姆Pietzcker' – Dotnet

+0

+1了很好的解释。 – Fischermaen

0

这应该工作

^\d{9}$ 

希望帮助

0

您在"^之间有空格。它应该是:

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

它可能是在你的模式开始的空间?这看起来很奇怪,一个空格,然后是一个数字锚定到该行的开头。

这应该给你想要的东西:

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