And*_*ark 17
^\d{3}-\d{2}-\d{4}$
Run Code Online (Sandbox Code Playgroud)
\d是一个数字,{X}是重复前一个元素的X时间.
正如Dmitry在评论中指出的那样,^在开头和$结尾添加将导致正则表达式只匹配整个字符串是否为SSN.如果没有这些锚点,那么字符串abc123-45-6789xyz也会匹配.
小智 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试试.