我想从以下正则表达式中提取电话号码。当我一一输入数字时,它会提取所有电话号码格式,但当我在一个字符串中输入 2 个或更多数字时,它不会提取所有电话号码格式。
@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";
当然它不会提取多个数字。表达式以 开头^
和结尾$
,因此如果字符串包含除单个电话号码以外的任何内容,则正则表达式将无法匹配。
一种解决方案是删除那些开始和结束字符,然后循环以一次提取一个数字。
Regex rePhone = new Regex(@"\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d");
Match m = rePhone.Match(inputString);
while (m.Success)
{
string phone = m.Value;
m = m.NextMatch();
}
要提取所有电话号码,您可以试试这个正则表达式:
((\+|\+\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中使用此正则表达式检查您的电话号码