求助:修正正则表达式以匹配结尾含三个重复数字的手机号
解决方案
原正则的问题在于加了多余的数字不重复限制,那些(?!\1)这类负向预查规则强制要求前面每一位数字都不能和之前的任何一位重复,这完全超出了你的需求——你只需要保证结尾是三个相同数字,前面的数字是否重复根本不需要管。
修改后的正则非常简洁:
^5\d{6}(\d)\1{2}$
规则解释:
^5:匹配号码开头的固定数字5\d{6}:匹配任意6个数字(允许任意重复,完全满足你忽略前面重复的要求)(\d):捕获结尾三位数字的第一个数字,作为分组1\1{2}:匹配分组1的数字两次,加上前面的一次,刚好凑成三个相同数字$:确保匹配到字符串结尾,避免末尾之后还有其他字符
验证示例:
- 符合要求的
550268000:会被正常匹配 - 你提到的
550568000(开头有重复的5):同样会被匹配,因为前面的重复不再被限制
内容的提问来源于stack exchange,提问作者Leena
相关产品推荐
相关产品推荐

