首页 > 解决方案 > 用于验证 SSN 异常的正则表达式

问题描述

所以我正在尝试编写一个正则表达式来检查社会安全号码,并验证前 3 个数字不是 000、666 或任何 900 个数字(900、901...、999)。我对正则表达式比较陌生,我无法理解如何检查这种情况的前 3 个字符。然后检查接下来的2个字符不能是00,最后4个字符不能都是相同的数字。我想出了无数次尝试,但都没有完成。我不是在这里寻找答案,但也许有助于理解这个表达式是如何工作的。

标签: regex

解决方案


^(?!000|666|9\d\d)\d{3}-(?!00)\d\d-(!?(.)\1{3})\d{4}$

第一个负前瞻不允许000, 666, 和9\d\d开头。

第二个负前瞻不允许00作为第二个数字块。

第三个否定前瞻不允许一个字符后跟 3 次相同字符的重复。这可以防止您在最后一个块中使用所有相同的数字。

我想不出来

演示


推荐阅读