【发布时间】: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