2015-11-30 44 views
0

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

我想黑名单号码的一些组合为三个组号码。具体而言,我想完成以下3个条件。

  1. 前3个位数不能为000,666或大于899
  2. 第四和第五个数字也不能00
  3. 最后四位数字不能0000

回答

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}匹配任何SSN开始000666,或9XX
  2. \d{3}-00-\d{4}匹配任何SSN与00在中间
  3. \d{3}-\d{2}-0{4}匹配任何SSN与0000到底

^在开始时和$结尾强制完全匹配的ssn。如果您搜索的是子字符串,则可以省略这些。

()|一起分组运算符允许任何的|分隔的选项相匹配。

如果SSN不匹配任何三个,那么它通过你的条件

0

Previous answer是相当正确的,但正则表达式本身可能更多方式simplier:

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

我找到了好正则表达式here

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