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

标签 java regex

我想找到没有重复数字的 10 位数字,例如:

1123456789 //fail, there are two 1's
6758951230 //fail, there are two 5's
6789012345 //pass, each digit occurs once only. 

目前我正在使用正则表达式,但只能匹配 10 位数字(它不检查重复项。我正在使用这个正则表达式:
[0-9]{10}

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

最佳答案

这个正则表达式有效:

^(?!.*(.).*\1)\d{10}$

这使用 anchor 定的否定前瞻和后向引用来断言没有重复字符。

live demo使用您的示例。

在Java中:
if (str.matches("^(?!.*(.).*\\1)\\d{10}"))
    // number passes

关于java - 正则表达式查找具有唯一数字的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63402284/

相关文章:

java - 单例和异常

java - 使用 OAuth2.0 客户端凭据对 Azure Log Analytics Api 进行身份验证

java - javafx2中的可编辑表

java - java.lang.Object 的 protected 方法如何免受子类的影响?

c# 正则表达式,只允许数字和字母不起作用

java - 为这些类型的字节级操作进行 Java 编码的最佳方法是什么?

javascript - 从字符串中获取电子邮件

正则表达式可选替代搜索

java - 查找要在特定正则表达式中匹配的字符的索引

ruby - 在 ruby​​ 的网页中查找重复模式