SSN的正则表达式

时间:2011-08-15 16:43:34

标签: c# regex

我在C#中有一个方法,它说FormatSSN采用字符串格式的SSN并替换破折号。我的意思是我期待SSN采用XXX-XX-XXXX格式。我想写一个正则表达式,确保SSN采用我提到的格式。

任何人都可以帮我构建正则表达式吗?

3 个答案:

答案 0 :(得分:17)

^\d{3}-\d{2}-\d{4}$

\d是一个数字,{X}重复前一个元素X次。

正如Dmitry在评论中指出的那样,在开头添加^而在结尾添加$将导致正则表达式只匹配整个字符串是否为SSN。如果没有这些锚点,abc123-45-6789xyz之类的字符串也会匹配。

答案 1 :(得分:6)

我过去使用过简单的表达式,但由于SSN的形成有一些规则,我想出了一些更详细的说明:

^(?!000)(?!666)(?!9[0-9][0-9])\d{3}[- ]?(?!00)\d{2}[- ]?(?!0000)\d{4}$

根据Social Security Number Randomization,这个正则表达式正确地排除了以666,000和900-999开头的SSN。

您可以在Rubular尝试。

答案 2 :(得分:3)

您也可以尝试

[RegularExpression(@"^\d{9}|\d{3}-\d{2}-\d{4}$", 
ErrorMessage = "Invalid Social Security Number")]