java中使用正则表达式的字符串匹配
我想匹配像这样的电话号码, 除了000666和900-999之间的任何数字,它应该有3位数字,然后是2位数字,然后是4位数字。 例:123-75-3456是数学题 000-23-3452不是匹配号000 915-23-4534不是大于900的匹配 有人能帮忙吗? 对不起,忘了添加我尝试的内容,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}$ 编辑:我在
[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之间的数字。它可以工作,也可以从中理解其含义。谢谢