我需要验证电话号码 (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
慕运维8079593
TA贡献1876条经验 获得超5个赞
对于检查非零,您可以简单地使用>
运算符,对于其余规则,您可以使用此模式
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})$
添加回答
举报
0/150
提交
取消