用于社会安全号码验证的Javascript Regular Expression黑名单组合

时间:2015-11-30 23:57:41

标签: javascript regex

我有一个简单的社会安全号码正则表达式^\(?\d{3}\)?[- ]?\d{2}[- ]?\d{4}$

我想将这三组数字中的每一组的数字组合列入黑名单。具体来说,我想完成以下3个条件。

  1. 前3位数不能是000,666或大于899
  2. 第4和第5位数字不能为00
  3. 最后4位数字不能为0000

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个部分,每个部分对应于您的条件。

  1. (000|666|9\d{2})-\d{2}-\d{4}匹配以0006669XX
  2. 开头的任何SSN
  3. \d{3}-00-\d{4}匹配中间有00的任何SSN
  4. \d{3}-\d{2}-0{4}匹配任何最终0000的SSN
  5. 开头的^和最后的$强制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}$/