Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中使用正则表达式的字符串匹配_Java_Regex - Fatal编程技术网

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

java中使用正则表达式的字符串匹配,java,regex,Java,Regex,我想匹配像这样的电话号码, 除了000666和900-999之间的任何数字,它应该有3位数字,然后是2位数字,然后是4位数字。 例:123-75-3456是数学题 000-23-3452不是匹配号000 915-23-4534不是大于900的匹配 有人能帮忙吗? 对不起,忘了添加我尝试的内容, [0-9&&^[000666,[900-999]{3}-[0-9]{2}-[0-9]{4}我认为这一个应该起作用: ^(?!000|666|9\d{2})\d{3}-\d{2}-\d{4}$ 编辑:我在

我想匹配像这样的电话号码, 除了000666和900-999之间的任何数字,它应该有3位数字,然后是2位数字,然后是4位数字。 例:123-75-3456是数学题 000-23-3452不是匹配号000 915-23-4534不是大于900的匹配 有人能帮忙吗? 对不起,忘了添加我尝试的内容,
[0-9&&^[000666,[900-999]{3}-[0-9]{2}-[0-9]{4}

我认为这一个应该起作用:

^(?!000|666|9\d{2})\d{3}-\d{2}-\d{4}$
编辑:我在中找到了负前瞻语法

编辑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");
            }
        }
    }
}

你尝试过做什么吗?www.regex101.com添加了我尝试过的内容。稍等片刻,我正在编写一些代码。然后你会告诉我是否正确。请解释一下。做什么?\转义另一个字符。这里,d转义,与[0-9]的意思相同:任何介于0和9之间的数字。它可以工作,也可以从中理解其含义。谢谢