SSN编号的正则表达式

时间:2016-05-23 10:22:45

标签: regex

我有一个要求,即系统不允许SSN中的以下模式。

  • 全部相同:XXXXXXXXX
  • 上升顺序:X,X + 1,X + 2等,到X + 8
  • 下降顺序:X,X-1,X-2等,到X-8
  • 重复模式,其中X,Y和& Z是相同的数字:

    XYZXYZXYZ 
    XXXYYYZZZ 
    XYXYXYXYX 
    XYXYXYXYY 
    XYXYXYXYZ 
    

这不是与9位相关的正则表达式。它是9位数格式。

1 个答案:

答案 0 :(得分:0)

这个会找到XXXXXXXX并重复子模式

^(?=\d{9})(?:(\d{1,8})\1*|(\d\d)\2*\d|((\d)+\g{-1}{2}){3})$

^(?=\d{9})(?:(\d{1,8})\1*|(\d\d)\2*\d|(\d)+\3\3(\d)\4\4(\d)\5\5)$

Demo

对于升序或降序:

正则表达式是完成这项任务的错误工具! 正则表达式仅适用于常规语言,并且比较数字显然不常见,请参阅here

您必须使用您正在使用的编程语言手动进行递增/递减检查 如果你想使用正则表达式,你必须对每个数字进行硬编码。