使用RegEx提取许多电话号码

时间:2013-01-13 06:23:09

标签: c# regex

我想从以下正则表达式中提取电话号码。当我逐个输入数字时,它会提取所有电话号码格式,但是当我在一个字符串中输入2个或更多数字时,它不会提取。

@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";

3 个答案:

答案 0 :(得分:3)

当然它不会提取多个数字。表达式以^开头,以$结尾,因此如果字符串包含除单个电话号码以外的任何内容,则正则表达式将无法匹配。

一种解决方案是删除那些开始和结束字符,然后循环以一次提取一个数字。

Regex rePhone = new Regex(@"\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d");
Match m = rePhone.Match(inputString);
while (m.Success)
{
    string phone = m.Value;
    m = m.NextMatch();
}

答案 1 :(得分:3)

尝试此模式:

((\+\s|\d{1}\s?\+||\()(\d\)?\s?[-\.\s\(]??){8,}\d{1}|\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})

答案 2 :(得分:0)

要提取所有电话号码,您可以尝试以下正则表达式:

((\+|\+\s|\d{1}\s?|\()(\d\)?\s?[-\.\s\(]??){8,}\d{1}|\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})

它的数学经常是电话号码。 您可以在 Regex101.com

中使用此正则表达式检查您的电话号码