111111111 - Invalid
A121278237 - Invalid
7777777777 - Invalid
121263263 - Valid
111111112 - Valid
答案 0 :(得分:12)
^([0-9])(?!\1+$)[0-9]+$
应该有效。它需要一个至少两位数的字符串才能成功匹配。
说明:
匹配一个数字并将其捕获到反引用#1:([0-9])
断言无法匹配刚刚匹配的同一位数的任意长度(> 1)的字符串,后跟字符串的结尾:(?!\1+$)
然后匹配任何数字字符串,直到字符串结尾:[0-9]+$
编辑:当然,在Java中你需要转义字符串("\\"
)中的反斜杠。
答案 1 :(得分:2)
答案 2 :(得分:0)
根据蒂姆的回答,你可以通过添加或条款来消除“至少两位数”的要求。
^([0-9])(?!\1+$)[0-9]+$|^[0-9]$
例如:
String regex = "^([0-9])(?!\\1+$)[0-9]+$|^[0-9]$";
boolean a = "12".matches(regex);
System.out.println("a: " + a);
boolean b = "11".matches(regex);
System.out.println("b: " + b);
boolean c = "1".matches(regex);
System.out.println("c: " + c);
返回
a: true
b: false
c: true