2

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

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

2 回答 2

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();
}
于 2013-01-13T07:10:40.993 回答
1

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

((\+|\+\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中使用此正则表达式检查您的电话号码

于 2018-10-25T22:40:54.497 回答