您好我正在编写一个正则表达式来验证具有以下条件的美国SSN:
我目前正在使用此正则表达式来实现这些标准。
^(?!(\d)\1{8})(?!123456789)(?!987654321)(?!0{3})(?!6{3})(?!\d{3}0{2}\d{4})(?!\d{3}\d{2}0{4})\d{9}$|\d{3}-\d{2}-\d{4}$
除最后一个样本外,它拒绝接受以下样本。
555555555
555005555
222540000
123456789
987654321
000917642
666082134
231564365
然而,当我尝试创建相同正则表达式的变体以考虑( - )破折号时。
^(?!(\d)\1{2}-(\d)\1{1}-(\d)\1{3})(?!123-45-6789)(?!987-65-4321)(?!0{3}-(\d)\1{1}-(\d)\1{2})(?!0{6}-(\d)\1{1}-(\d)\1{2})(?!\d{3}-0{2}-\d{4})(?!\d{3}-\d{2}-0{4})\d{9}$|\d{3}-\d{2}-\d{4}$
它们似乎都没有失效。
答案 0 :(得分:0)
如果你像这样表达正则表达式:
^(?!(\d)\1{2}-?(\d)\1{1}-?(\d)\1{3})(?!123-?45-?6789)(?!987-?65-?4321)(?!0{3}-?(\d)\1{1}-?(\d)\1{2})(?!0{6}-?(\d)\1{1}-?(\d)\1{2})(?!\d{3}-?0{2}-?\d{4})(?!\d{3}-?\d{2}-?0{4})\d{3}-?\d{2}-?\d{4}$
你可以摆脱最后的OR,并且可以用于虚线或非虚线输入。