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可視化正則表達式:
添加回答
舉報