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

时间:2018-11-12 17:04:38

标签: 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.matcher("+32495715511");
    while (cellPhoneMatches.find()) {
        cellPhoneList.add(cellPhoneMatches.group());
    }

    System.out.println(cellPhoneList);

现在的问题是,运行此命令时,它与电话号码匹配。 但是,当相同的数字出现在大文本中时,它什么也找不到。

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

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

2 个答案:

答案 0 :(得分:3)

@Thefourthbird所说的正是。您是正则表达式正在寻找完全匹配的商品。如要匹配的文本中的电话号码必须以正则表达式匹配的电话号码(在此示例中,^开头)在此示例中,$结束(在本示例中为$开头)。

答案 1 :(得分:0)

尝试使用此

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

我以前没有尝试过。