2 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
你已經(jīng)非常接近了,你只需要捕獲你想要回溯并再次匹配的數(shù)字,這個(gè)模式就可以工作:
^021([1-9])\\1\\d{6}$
請(qǐng)注意,這[0][2][1]
與 完全相同021
,并且字符范圍[0-9]
可以簡(jiǎn)化為\\d
。

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
我猜也許,
^021([0-9])\\1[0-9]{6}$
或者
^021(\\d)\\1\\d{6}$
一開(kāi)始就可以,Java 使用雙重轉(zhuǎn)義。
演示
測(cè)試
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));
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
正則表達(dá)式電路
jex.im可視化正則表達(dá)式:
添加回答
舉報(bào)