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

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

例如:911、311等,

我们已经写了下面的一个。

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

上面的问题是

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

对于 38311, 2311 --> 那些是 4 位和 5 位长度扩展,可以后缀为“11”。但是上面的模式是不允许的。我怎样才能做到这一点?


至尊宝的传说
浏览 178回答 2
2回答

12345678_0001

你可以使用:(?!^((0+)|(\d11))$)(?=^\d{3,6}$).*(?!^((0+)|(\d11))$) - 从头到尾确保它不是全零,也不是数字后跟 11(?=^\d{3,6}$) - 从头到尾确保我们处理的是 3 到 6 位数字.* - 如果之前的验证通过,那么可以安全地获取所有内容https://regex101.com/r/eIVvvX/1

慕运维8079593

对于检查非零,您可以简单地使用>运算符,对于其余规则,您可以使用此模式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})$
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript