我想从以下正则表达式中提取电话号码。当我逐个输入数字时,它会提取所有电话号码格式,但是当我在一个字符串中输入2个或更多数字时,它不会提取。
@"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";
答案 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
中使用此正则表达式检查您的电话号码