正则表达式查找具有唯一数字的数字

Sio*_*733 10 java regex

我想找到没有重复数字的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)

这可以用正则表达式完成还是有更好的方法来实现这一目标?

Boh*_*ian 8

这个正则表达式有效:

^(?!.*(.).*\1)\d{10}$
Run Code Online (Sandbox Code Playgroud)

这使用了一个锚定的负面向前看,后面引用断言没有重复的字符.

查看使用示例的实时演示.

在java中:

if (str.matches("^(?!.*(.).*\\1)\\d{10}"))
    // number passes
Run Code Online (Sandbox Code Playgroud)