用于电话号码验证的正则表达式

1犀牛

我必须在字符串中找到有条件的电话号码:

  • 从...开始 0
  • 1011数字0-9
  • 最多2个字符"-"(不在开头或结尾)

例如:0123456789001-23456789003-1234-12345我的正则表达式,但它不起作用:

/\d+{10,11}|(\d+\-\d+){11,12}|(\d+\-\d+\-\d+){12,13}/
阿玛丹

这有点棘手。首先,您的正则表达式具有正确的想法。鉴于长度随破折号的数量而变化,我们需要分别检查每种情况。(也许有更好的方法,但是我想不出来。)但是,(\d+-\d+){11,12}这并不意味着“长度为11-12”,而是“ 11-12重复\d+-\d+,给您超过11-12个字符的方式。甚至如果是正确的话,由于析取的顺序,您将无法匹配0123456789-1,因为将首先找到10位数字,然后再检查十位数字后跟破折号和另一位数字。

如果您要验证整个字符串,那会更容易,因为您可以使用锚点^$找到结尾。没有它,这会有点棘手:

(?=[\d-]{13,14}(?![\d-]))0\d+-\d+-\d+(?![\d-])|(?=[\d-]{12,13}(?!-|\d))0\d+-\d+(?![\d-])|\d{10,11}

第一部分(?=[\d-]{13,14}(?![\d-]))0\d+-\d+-\d+(?![\d-])检查双破折号模式。(?=[\d-]{13,14}(?![\d-]))检查您是否有13-14个数字或破折号字符,之后没有数字或破折号。在确定存在这样的区域后,我们确保在数字之间恰好有两个破折号(并确保整个过程再次没有出现破折号-该锚在我们的超前状态中同步条件,并且在主要模式中)。

第二部分(?=[\d-]{12,13}(?!-|\d))0\d+-\d+(?![\d-])类似,检查一个破折号是否匹配。第三部分,\d{10,11}很简单,找到没有破折号的匹配项。

所有这些都是在假设sawa针刺是准点的情况下进行的:这0123456789-不是匹配项。如果是这样,您将需要将一些加号更改为星号。

肾小管

编辑:Rubular模式\d{11,12}在无情的情况下仍然有错误,不能打扰生成另一个Rubular:P

编辑2:想到了一种更好的方法。

(?=(?:\d-?){10,11}(?![\d-]))\d+(-\d+){0,2}(?![\d-])

确保有10-11个数字,并确保有0-2个破折号。锚点的想法与上一个相同。

小叶

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式验证电话号码扩展

来自分类Dev

电话号码的正则表达式验证

来自分类Dev

正则表达式用于拆分电话号码

来自分类Dev

正则表达式,用于验证以+254开头的电话号码

来自分类Dev

正则表达式,用于接受JavaScript验证中的所有电话号码

来自分类Dev

用于根据状态前缀验证电话号码的复杂正则表达式

来自分类Dev

正则表达式,用于验证美国电话号码格式

来自分类Dev

用于 10-15 位电话号码验证的正则表达式

来自分类Dev

Perl电话号码正则表达式

来自分类Dev

正则表达式与荷兰电话号码

来自分类Dev

阿联酋电话号码正则表达式

来自分类Dev

提取电话号码正则表达式

来自分类Dev

匹配电话号码,正则表达式

来自分类Dev

正则表达式的电话号码?

来自分类Dev

特定电话号码正则表达式

来自分类Dev

电话号码正则表达式

来自分类Dev

瑞典电话号码正则表达式

来自分类Dev

正则表达式-电话号码-Android

来自分类Dev

正则表达式红宝石电话号码

来自分类Dev

法国电话号码的正则表达式

来自分类Dev

使用正则表达式清理电话号码

来自分类Dev

荷兰电话号码的正则表达式

来自分类Dev

电话号码的正则表达式

来自分类Dev

正则表达式的电话号码?

来自分类Dev

MVC 5正则表达式电话号码

来自分类Dev

正则表达式寻找好的电话号码

来自分类Dev

电话号码匹配正则表达式

来自分类Dev

日本电话号码的正则表达式

来自分类Dev

正则表达式识别电话号码