如何用Regex捕获9位特殊手机号中的两组重复4次匹配组?
解决方案:匹配5XXXXYYYY格式的特殊手机号并捕获两组重复数字
直接用这个正则就能满足需求:
^5(\d)\1{3}(\d)\2{3}$
正则说明:
^和$锚定整个字符串,确保匹配的是完整的9位号码,避免出现部分匹配的情况5匹配号码开头固定的第一位数字(\d)\1{3}:捕获第一个重复4次的数字组,(\d)捕获单个数字,\1{3}表示这个数字再重复3次,凑成4个相同数字(对应XXXX)(\d)\2{3}:同理,捕获第二个重复4次的数字组(对应YYYY)
用511112222测试时,会得到两个捕获组:
- 分组1:
1(对应完整的1111) - 分组2:
2(对应完整的2222)
如果想直接捕获完整的4位重复串(比如直接拿到1111和2222),可以调整正则为:
^5((\d)\2{3})((\d)\4{3})$
这时分组1是1111,分组3是2222。
你之前的正则问题在于:没有限定整个号码的结构,而且只写了单个重复组的匹配规则,所以只会找到第一个符合的1111就停止了。加上锚点和明确的两组重复结构,就能同时捕获两组目标内容了。
内容的提问来源于stack exchange,提问作者Leena
相关产品推荐
相关产品推荐

