为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2021-12-12 10:37:52
我需要验证电话号码 (TN) 分机(仅限分机)。扩展名可以是 3-6 位长度和 3 位扩展名,不应跟随 11。是的,扩展名不应包含特殊字符和全零。例如:911、311等,我们已经写了下面的一个。(?!0+$)[0-9](?!.*11).[0-9]*$上面的问题是对于 311、211 --> 验证通过。对于 38311, 2311 --> 那些是 4 位和 5 位长度扩展,可以后缀为“11”。但是上面的模式是不允许的。我怎样才能做到这一点?
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

你可以使用:

(?!^((0+)|(\d11))$)(?=^\d{3,6}$).*
  • (?!^((0+)|(\d11))$) - 从头到尾确保它不是全零,也不是数字后跟 11

  • (?=^\d{3,6}$) - 从头到尾确保我们处理的是 3 到 6 位数字

  • .* - 如果之前的验证通过,那么可以安全地获取所有内容

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


查看完整回答
反对 回复 2021-12-12
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

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

//img1.sycdn.imooc.com//61b560a70001e07d08170221.jpg

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})$


查看完整回答
反对 回复 2021-12-12
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信