关于java的正则表达式

发布于 2022-09-01 22:52:20 字数 106 浏览 12 评论 0

我是学生 老师布置了一个题目 判断一个一个7位数字 即0-9间的一个数字 但是其中数字不能重复 通过输出true与false判断
主要是这样的正则表达式该怎么写?
谢谢大家

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

花辞树 2022-09-08 22:52:20

强行用正则的方法:


public static void main(String[] args) throws InterruptedException {
        Pattern p = Pattern.compile("(\\d)(?!\\1)(\\d)(?!\\1|\\2)(\\d)(?!\\1|\\2|\\3)(\\d)(?!\\1|\\2|\\3|\\4)(\\d)(?!\\1|\\2|\\3|\\4|\\5)(\\d)(?!\\1|\\2|\\3|\\4|\\5|\\6)(\\d)");
        Matcher m = p.matcher("2345668");
        while(m.find()){
            System.out.println(m.group());
        }
        
    }
分開簡單 2022-09-08 22:52:20
String s = "1234567";
System.out.println(Pattern.matches("^\\d{7}$", s)
    && !Pattern.compile("(\\d)\\d*\\1").matcher(s).find());
卖梦商人 2022-09-08 22:52:20
System.out.println("^(?!\\d*?(\\d)\d*?1)\\d{7}$", str);
两相知 2022-09-08 22:52:20

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

这里有两个技巧,一个是先行断言,一个是反向引用。

先行断言 (?!pattern) 禁止匹配 pattern,这里用于禁止匹配重复数字。

反向引用 \1 这里引用了之前 (.) 匹配的内容,.*(.).*\1 也就用于匹配重复出现的字符。

合起来意思就是:没有重复字符,由七个数字构成的字符串。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文