java中使用正则表达式进行字符串匹配

我希望匹配这样的电话号码,它应该有3位数字,除了000,666和900-999之间的任何数字后跟 – 然后是2位数字,然后是4位数字。 例如:123-75-3456是数学000- 23-3452不匹配(没有000)915-23-4534不匹配(大于900)有人可以帮忙吗? 抱歉忘记添加我尝试的内容,[0-9 && ^ [000,666,[900-999]] {3} – [0-9] {2} – [0-9] {4}

我认为这个应该做的伎俩:

^(?!000|666|9\d{2})\d{3}-\d{2}-\d{4}$ 

编辑:我在这个post中找到了负面的前瞻语法。

编辑2:这是一个针对想要测试它的人的一些代码片段:

 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Pattern pattern = Pattern.compile("^(?!000|666|9\\d{2})\\d{3}-\\d{2}-\\d{4}$"); Scanner sc = new Scanner(System.in); while (true) { System.out.println("Next number :"); Matcher matcher = pattern.matcher(sc.nextLine()); if (matcher.find()) { System.out.println("Matches"); } else { System.out.println("Doesn't match"); } } } }