2 回答
TA贡献1871条经验 获得超13个赞
你已经非常接近了,你只需要捕获你想要回溯并再次匹配的数字,这个模式就可以工作:
^021([1-9])\\1\\d{6}$
请注意,这[0][2][1]
与 完全相同021
,并且字符范围[0-9]
可以简化为\\d
。
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可视化正则表达式:
添加回答
举报