我有一个简单的社会安全号码正则表达式^\(?\d{3}\)?[- ]?\d{2}[- ]?\d{4}$
我想将这三组数字中的每一组的数字组合列入黑名单。具体来说,我想完成以下3个条件。
答案 0 :(得分:0)
if (!ssn.match(/^((000|666|9\d{2})-\d{2}-\d{4}|\d{3}-00-\d{4}|\d{3}-\d{2}-0{4})$/)) {
...
}
其中ssn
是包含SSN的字符串。
此正则表达式分为3个部分,每个部分对应于您的条件。
(000|666|9\d{2})-\d{2}-\d{4}
匹配以000
,666
或9XX
\d{3}-00-\d{4}
匹配中间有00
的任何SSN \d{3}-\d{2}-0{4}
匹配任何最终0000
的SSN 开头的^
和最后的$
强制ssn
完全匹配。如果您要搜索子字符串,则可以省略这些。
(
和)
分组运算符与|
一起允许任何|
分隔的选项匹配。
如果SSN与这三者中的任何一个都不匹配,那么它会通过您的条件
答案 1 :(得分:0)
Previous answer非常正确,但RegEx本身可能更简单:
/^(?:000|666|9\d\d)|^\d{3}-?00|0{4}$/
答案 2 :(得分:0)
我找到了一个很好的正则表达式here
/^(?!000)(?!666)(?!9)\d{3}([- ]?)(?!00)\d{2}\1(?!0000)\d{4}$/