【问题标题】:Regular expression UK Phone Number - Optional Digit [duplicate]正则表达式英国电话号码 - 可选数字 [重复]
【发布时间】:2020-11-09 13:53:52
【问题描述】:

我有一个正在使用的模式,它可以满足我的所有需求,但它不允许使用 10 位数的电话号码,并且并非所有英国号码都是 11 位数,例如,01932 783433 是允许且有效的,但01932 78383也有效但不允许;

图案:

^\s*\(?(020[7,8]{1}\)?[ ]?[1-9]{1}[0-9{2}[ ]?[0-9]{4})|(0[1-8]{1}[0-9]{3}\)?[ ]?[1-9]{1}[0-9]{2}[ ]?[0-9]{3})\s*$

我尝试编辑模式但没有成功,但每次我进行更改并认为我在那里时,模式开始允许非数字字符,如“ext 456”(分机号)在最后,这就是我试图停下来。

有没有人能够提供解决方案,让第 11 位可选而不更改其他任何内容?

【问题讨论】:

  • 把最后一个{3}改成{2,3}
  • 你不应该过度使用字符类。由于空间周围不必要的[],您忽略了[0-9{2}[ ]? 错字。您的两个备选方案未正确分组,您仍然匹配awjfhwe01932 783433 之类的字符串。 (0207)119 327 类似号码有效吗?是的,使用^\s*(?:\(?020[78]\)? ?[1-9][0-9]{2} ?[0-9]{3,4}|0[1-8][0-9]{3}\)? ?[1-9][0-9]{2} ?[0-9]{2,3})\s*$,见regex101.com/r/xCnLCC/1

标签: html regex validation


【解决方案1】:

将 {3} 更改为 {2,3} 的 cmets 解决了我遇到的问题,指向 regex101.com 的指针对于理解我的问题非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    相关资源
    最近更新 更多