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

时间:2019-10-31 18:20:43

标签: javascript regex

我需要验证电话号码(TN)分机(仅分机)。扩展名可以是3-6位数字的长度,也可以是3位数字的扩展名,不应跟随11。此外,扩展名不能包含特殊字符和全零。

例如:911、311等,

我们写了以下一本书。

(?!0+$)[0-9](?!.*11).[0-9]*$  

上述问题是

对于311、211->验证已通过。

对于38311,2311->分别是4位和5位数字的扩展名,并且可以后缀'11'。但是上述模式是不允许的。我该如何实现?

2 个答案:

答案 0 :(得分:0)

要检查非零值,您可以简单地使用>运算符,而对于其余规则,可以使用此模式

enter image description here

let data = ['911','311','38311','2311','000000','123111', '112']

data.forEach(v=>{
  console.log(v, '\t' , v > 0 && /^(?:(?:(?!11$)\d){3}|\d{4,6})$/.test(v)) 
})


要检查非零值,您也可以使用正则表达式,但我个人更喜欢上述方法

^(?!^0+$)(?:(?:(?!11$)\d){3}|\d{4,6})$

答案 1 :(得分:0)

您可以使用:

(?!^((0+)|(\d11))$)(?=^\d{3,6}$).*
  • (?!^((0+)|(\d11))$)-从头到尾确保它既不是全零也不是数字,后跟11
  • (?=^\d{3,6}$)-从头到尾确保我们处理的是3到6位数字
  • .*-如果先前的验证通过了,那么抓住一切都是安全的

https://regex101.com/r/eIVvvX/1