Java 使用正则表达式在文本中查找电话号码

Java 使用正则表达式在文本中查找电话号码,java,regex,Java,Regex,我有一个完整的文本字符串,我想找到所有的比利时手机号码 所以我写了这段代码: Pattern cellPhoneRegex = Pattern.compile("^((\\+|00)32\\s?|0)4(60|[789]\\d)(\\s?\\d{2}){3}$"); List<String> cellPhoneList = new ArrayList<>(); Matcher cellPhoneMatches = cellPhoneRegex.matche

我有一个完整的文本字符串,我想找到所有的比利时手机号码

所以我写了这段代码:

Pattern cellPhoneRegex = Pattern.compile("^((\\+|00)32\\s?|0)4(60|[789]\\d)(\\s?\\d{2}){3}$");
    List<String> cellPhoneList = new ArrayList<>();
    Matcher cellPhoneMatches = cellPhoneRegex.matcher("+32495715511");
    while (cellPhoneMatches.find()) {
        cellPhoneList.add(cellPhoneMatches.group());
    }

    System.out.println(cellPhoneList);
Pattern-cellPhoneRegex=Pattern.compile(“^(\\++12400)32\\s?0)4(60[789]\\d)(\\s?\\d{2}){3}$”;
List cellPhoneList=新建ArrayList();
Matcher cellPhoneMatches=cellPhoneRegex.Matcher(“+32495715511”);
while(cellPhoneMatches.find()){
添加(cellPhoneMatches.group());
}
System.out.println(手机电话列表);
现在的问题是,当你运行这个,它匹配的电话号码。 但是当同一个数字出现在一个巨大的文本中时,它什么也找不到

对于此字符串“Tel:+32495715511”,没有匹配项

我不明白为什么它不匹配。

试试这个

var telephone = /\(?s?+?32s?\)?s?[789]d{8,}/;

我以前没试过。

正是第四只鸟说的。你是regex在寻找一个完全匹配的。正如在文本中一样,匹配必须以(^means在本例中以开头)和($means在本例中以结尾)匹配正则表达式的电话号码开头

尝试移除锚定
^
$
var phone=“+327890005678”;电话。匹配(电话);天哪,我觉得自己太傻了。