SSN的正则表达式

Sai*_*and 9 c# regex

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

谁能帮我构建一个正则表达式?

And*_*ark 17

^\d{3}-\d{2}-\d{4}$
Run Code Online (Sandbox Code Playgroud)

\d是一个数字,{X}是重复前一个元素的X时间.

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

  • 也许你想在表达式的开头加上''^'`,在结尾加上''$'`来表示你期望整个字符串完全匹配. (8认同)

小智 6

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

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

根据社会安全号码随机化,这个正则表达式正确地排除了以666,000和900-999开头的SSN .

你可以在Rubular试试.