如何修改正则表达式,排除全重复数字的传真/电话号码?
排除全重复数字的传真/电话号码正则优化
你可以在原正则开头添加负向先行断言来排除全重复数字的号码,修改后的正则如下:
^(?!.*(\d)\1{8,})(\+?)([\(]?\d{1}[\)]?((\s)|(-)?))?([\(]?\d{3}[\)]?-?\s?\d{3}-?\s?\d{4}\s?)?$
关键修改说明
(?!.*(\d)\1{8,})是核心规则:(?!...)表示负向先行断言,即如果括号内的模式匹配成功,整个正则直接判定为无效。(\d)\1{8,}匹配某个数字(\d)重复出现9次及以上的情况(\1是对第一个捕获组的引用,{8,}表示至少重复8次,加上初始的1次就是至少9次)。- 结合原正则的结构,有效号码至少包含10位数字(比如10位纯数字、带区号的11位等),这个断言可以精准排除所有数字完全重复的号码。
验证效果
- 通过验证的号码:
+1(123)456-7890、123-456-7890、(123) 456 7890 - 被排除的号码:
1111111111、+11111111111、(111)111-1111
内容的提问来源于stack exchange,提问作者Alexander Samuel
相关产品推荐
相关产品推荐

