有没有办法使用正则表达式排除以 11 结尾的 3 位数字?

Is there a way to exclude 3 digit numbers ending in 11 using regular expressions?

我正在尝试验证 phone 号码区号 (北美),检查号码是否以 1 或 0 开头。此外,该号码不应包括诸如此类的保留号码(即不包括以 11 结尾的所有号码)。

我已经尝试了好几种方法,但还是没有成功。我不太擅长正则表达式。这是我最近的尝试

\b([2-9](?!11)|[2-9][0-9]{2})\b

您的尝试非常接近,您的匹配条件中不需要 "either" 表达式,只是一个否定的前瞻,如果它看到字符串,它将停止匹配。这是一些工作正则表达式的示例:

([2-9](?!11)[0-9]{2})

你可以试试here

没有负前瞻的解决方案:

([2-9][02-9][0-9]|[2-9][0-9][02-9])

这应该按要求工作,包括 0 和 1 警告。

        String pat = "[2-9]\d{2}(?<!11)";
        String[] data = {"123","001","212", "321", "449","811", "121", "111", "911", "099"};
        for (String s : data ) {    
            System.out.println(s + " " + (s.matches(pat) ? "valid" : "invalid" ));
        }


版画

123 invalid
001 invalid
212 valid
321 valid
449 valid
811 invalid
121 invalid
111 invalid
911 invalid
099 invalid