我想找到没有重复数字的10位数字,例如:
1123456789 //fail, there are two 1's
6758951230 //fail, there are two 5's
6789012345 //pass, each digit occurs once only.
Run Code Online (Sandbox Code Playgroud)
目前我正在使用正则表达式,但只能匹配10个数字(它不会检查重复.我使用这个正则表达式:
[0-9]{10}
Run Code Online (Sandbox Code Playgroud)
这可以用正则表达式完成还是有更好的方法来实现这一目标?
这个正则表达式有效:
^(?!.*(.).*\1)\d{10}$
Run Code Online (Sandbox Code Playgroud)
这使用了一个锚定的负面向前看,后面引用断言没有重复的字符.
查看使用示例的实时演示.
在java中:
if (str.matches("^(?!.*(.).*\\1)\\d{10}"))
// number passes
Run Code Online (Sandbox Code Playgroud)