用于社会保险号码验证的Javascript正则表达式黑名单组合

用于社会保险号码验证的Javascript正则表达式黑名单组合,javascript,regex,Javascript,Regex,我有一个简单的社会保险号码regex^\(?\d{3}\)?[-]?\d{2}[-]?\d{4}$ 我想为这三组数字中的每一组列出一些数字的组合。具体来说,我想实现以下3个条件 前3位数字不能为000、666或大于899 第四位和第五位数字不能是00 最后4位数字不能是0000 其中ssn是包含ssn的字符串 此正则表达式分为3个部分,每个部分对应于您的条件 (000 | 666 | 9\d{2})-\d{2}-\d{4}匹配任何以000、666或9XX开头的SSN \d{3}-00-\d{4}

我有一个简单的社会保险号码regex
^\(?\d{3}\)?[-]?\d{2}[-]?\d{4}$

我想为这三组数字中的每一组列出一些数字的组合。具体来说,我想实现以下3个条件

  • 前3位数字不能为000、666或大于899
  • 第四位和第五位数字不能是00
  • 最后4位数字不能是0000
  • 其中
    ssn
    是包含ssn的字符串

    此正则表达式分为3个部分,每个部分对应于您的条件

  • (000 | 666 | 9\d{2})-\d{2}-\d{4}
    匹配任何以
    000
    666
    9XX
    开头的SSN
  • \d{3}-00-\d{4}
    匹配中间有
    00
    的任何SSN
  • \d{3}-\d{2}-0{4}
    将任何SSN与最后的
    0000
    匹配
  • 开头的
    ^
    和结尾的
    $
    强制执行
    ssn
    的精确匹配。如果要作为子字符串进行搜索,可以忽略这些

    分组运算符与
    |
    结合使用,允许任何
    |
    分隔选项匹配

    如果SSN不匹配这三个条件中的任何一个,那么它通过了您的条件

    是非常正确的,但是正则表达式本身可能要简单得多:

    /^(?:000|666|9\d\d)|^\d{3}-?00|0{4}$/
    
    我找到了一个好的正则表达式

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

    /^(?:000|666|9\d\d)|^\d{3}-?00|0{4}$/