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

java中关于数字的正则表达式(例如以021开头的电话号码,然后是两个重复的数字)?

java中关于数字的正则表达式(例如以021开头的电话号码,然后是两个重复的数字)?

侃侃无极 2023-08-16 17:57:44
java中关于一个数字(如以021开头的电话号码,然后是两个重复的数字)总共11位数字的正则表达式,例如: 02177890488  or  02177098765   or   02199123450请帮助我,我试过这个:^[0][2][1][1-9]\\1[0-9]{6}$但不起作用:(
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

你已经非常接近了,你只需要捕获你想要回溯并再次匹配的数字,这个模式就可以工作:

^021([1-9])\\1\\d{6}$

请注意,这[0][2][1]与 完全相同021,并且字符范围[0-9]可以简化为\\d


查看完整回答
反对 回复 2023-08-16
?
沧海一幻觉

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

我猜也许,

^021([0-9])\\1[0-9]{6}$

或者

^021(\\d)\\1\\d{6}$

一开始就可以,Java 使用双重转义。

演示

测试

import java.util.regex.Matcher;

import java.util.regex.Pattern;



public class RegularExpression{


    public static void main(String[] args){


        final String regex = "^021(\\d)\\1\\d{6}$";

        final String string = "02177890488\n"

             + "02177098765\n"

             + "02199123450\n"

             + "02100890488\n"

             + "02111098765\n"

             + "02122123450\n"

             + "02133123450\n"

             + "02144123450\n"

             + "02155123450\n"

             + "02166123450\n"

             + "02188123450";


        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);

        final Matcher matcher = pattern.matcher(string);


        while (matcher.find()) {

            System.out.println("Full match: " + matcher.group(0));

            for (int i = 1; i <= matcher.groupCount(); i++) {

                System.out.println("Group " + i + ": " + matcher.group(i));

            }

        }


    }

}

正则表达式电路

jex.im可视化正则表达式:

https://img3.sycdn.imooc.com/64dc9de70001799005990144.jpg

查看完整回答
反对 回复 2023-08-16
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

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