通过正则表达式查找字符串中的所有电话号码

本文关键字:电话号码 字符串 正则表达式 查找 | 更新日期: 2023-09-27 18:32:11

我必须在字符串中找到所有电话号码。

我这样做(我的简化 c# 测试代码):

const string testString = "+39702937311";
        var m = new Regex("(?<telephonenumber>^''+?(''d[''d-. ]+)?(''([''d-. ]+''))?[''d-. ]+''d$)").Matches(testString);
        foreach (Match match in m)
        {
            var nr = match.Groups["telephonenumber"].Value;
            Debug.WriteLine(nr);
            foreach (Capture capture in match.Captures)
            {
                Debug.WriteLine("Index={0}, Value={1}", capture.Index, capture.Value);
            }
        }

当字符串本身是一个电话号码时,它有效。但是,如果字符串是包含电话号码的较长字符串,则找不到电话号码。

所以,如果我测试

const string testString = "Hello! This is a telephone number: +39702937311 You should call it";

它找不到 +39702937311 作为电话号码。

我该怎么做?谢谢!

通过正则表达式查找字符串中的所有电话号码

(?<telephonenumber>^''+?(''d[''d-. ]+)?(''([''d-. ]+''))?[''d-. ]+''d$)
                   ^                                                 ^

指示的符号是线边界匹配器。 如果你想用这个数学单词,你需要一个单词边界匹配器。

^$替换为'b,以指示您要匹配单词而不是行。