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

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

 02177890488
 or
 02177098765 
 or 
 02199123450

请帮助我,

我试过这个:

^[0][2][1][1-9]\\1[0-9]{6}$

但不起作用:(


侃侃无极
浏览 116回答 2
2回答

慕桂英4014372

你已经非常接近了,你只需要捕获你想要回溯并再次匹配的数字,这个模式就可以工作:^021([1-9])\\1\\d{6}$请注意,这[0][2][1]与 完全相同021,并且字符范围[0-9]可以简化为\\d。

沧海一幻觉

我猜也许,^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可视化正则表达式:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java