首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个负LookAhead在US上

多个负LookAhead在US上
EN

Stack Overflow用户
提问于 2014-05-22 08:57:35
回答 1查看 78关注 0票数 0

嗨,我编写了一个正则表达式来验证带有以下条件的US:

  1. 所有数字都是相同的
  2. 123456789或987654321
  3. 前三位数字是000或666。
  4. 中间两位数为00,最后四位数字为0000。

我目前正在使用这个正则表达式来表示这些标准。

代码语言:javascript
复制
 ^(?!(\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}$

除最后一个样本外,它还会拒绝下列样品。

代码语言:javascript
复制
555555555
555005555
222540000
123456789
987654321
000917642
666082134
231564365

但是,当我试图创建一个相同的正则表达式来解释(-)破折号时。

代码语言:javascript
复制
^(?!(\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}$

他们中没有一个人是无效的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-22 09:40:27

如果你用这样的方式表达正则表达式:

代码语言:javascript
复制
^(?!(\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,并将工作的虚线或非虚线输入。

这里的示例:http://regex101.com/r/jK9eC5

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23802160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档