繁体   English   中英

正则表达式是否用空格分隔9个唯一数字?

[英]Regex for 9 unique digits separated by a space?

我正在尝试为数字输入编写一段验证代码。 数字必须包含0到8。顺序无所谓,但数字不能重复。

例如1 4 7 8 0 2 5 3 6 //有效1 1 3 6 3 8 0 5 4 //无效,因为重复了1

到目前为止,我有一个可容纳9个唯一数字的正则表达式:

 String pattern = "^(?!.*(.).*\\1)\\d{9}";

例如123456780 //有效

112345678 //无效,因为重复了1

1 2 3 4 5 6 7 8 0 //无效

我需要做的是在要用空格隔开的数字处添加位!

谢谢。

这确实是对正则表达式的滥用:D但是

^(?!.*(\d).*\1)(?:[0-8] ){8}[0-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));
}

您将不得不考虑检查无效输入。 或者,您可以先检查nums是否为9,然后再添加到set中并返回false然后立即返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM