为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式用于由空格分隔的9个唯一数字?

正则表达式用于由空格分隔的9个唯一数字?

慕妹3242003 2022-09-07 17:04:33
我正在尝试为数字输入编写一段验证代码。这些数字必须包含 0 到 8。顺序无关紧要,但数字不能重复。例如 1 4 7 8 0 2 5 3 6 //valid 1 1 3 6 3 8 0 5 4 //无效,因为 1 重复到目前为止,我有一个正则表达式,它接受9个唯一的数字: String pattern = "^(?!.*(.).*\\1)\\d{9}";例如 123456780 //valid112345678 //无效,因为 1 重复1 2 3 4 5 6 7 8 0 //无效我所需要的只是添加一个位,它接受由空格分隔的数字!谢谢。
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

这实际上是滥用正则表达式:D但

^(?!.*(\d).*\1)(?:[0-8] ){8}[0-8]$

应该这样做。确保在不允许重复的部分只考虑数字;然后,您可以有八个数字空间对,后跟一个数字在末尾(带有正确的数字)。


查看完整回答
反对 回复 2022-09-07
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

我不确定您是否需要正则表达式。考虑使用 :Set


Scanner sc = new Scanner(System.in);

Set<Integer> set = new HashSet<>();

int count = 0;

while (count < 9) {

    System.out.println("Enter a number:");

    int num = sc.nextInt();

    if (num >= 0 && num <= 8) {

        set.add(num);

    }

    count++;

}


System.out.println(set.size() == 9);

或者,如果您的输入一次性出现:


String[] nums = sc.nextLine().split("\\s+");

for (String num : nums) {

    set.add(Integer.parseInt(num));

}

您必须考虑检查无效输入。或者,您可以在添加到集合之前先检查是9,然后立即返回。numsfalse


查看完整回答
反对 回复 2022-09-07
  • 2 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号