我的正则表达式:
^(\d)\1{2}.\1{3}.\1{3}-\1{2}$
不允许重复:
000.000.000-00
111.111.111-11
222.222.222-22
333.333.333-33
444.444.444-44
555.555.555-55
666.666.666-66
888.888.888-88
999.999.999-99
根据https://www.regex101.com/,它工作正常
因此,我尝试将其放入Java中,我已经尝试过这种方式:
^(\\d)\\1{2}.\\1{3}.\\1{3}-\\1{2}$
,但绝对不想工作。我的代码:
if (hasTheSameDigits(cpfReplaced)) {
msg = "All the digits of informed CPF are equal.";
}
public boolean hasTheSameDigits(String cpf) {
return cpf.matches("^(\\d)\\1{2}\\1{3}\\1{3}\\1{2}$");
}
如果有人可以帮助我,那将是很棒的。
最佳答案
此正则表达式应该起作用:([0-9])\1\1\.\1\1\1\.\1\1\1-\1\1\1
。
(注意:由于转义符"([0-9])\\1\\1\\.\\1\\1\\1\\.\\1\\1\\1-\\1\\1\\1"
,它膨胀到此Java字符串。)
说明:([0-9])
查找一个数字。\1
查找相同的数字。然后再次。然后再次。然后再次。\.
与.
匹配-
与-
匹配