首页 > 解决方案 > 使用正则表达式在文本中查找电话号码

问题描述

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

所以我写了这段代码:

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);

现在的问题是,当您运行它时,它会匹配电话号码。但是当相同的数字出现在一个巨大的文本中时,它什么也找不到。

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

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

标签: javaregex

解决方案


正是@Thefourthbird 所说的。你的正则表达式正在寻找一个完全匹配的。在要匹配的文本中,必须以 (^ 表示在此示例中以开头) 并以 ($ 表示在此示例中以结尾) 与正则表达式匹配的电话号码结尾。


推荐阅读