如果行包含正则表达式以获取电话号码

时间:2018-11-27 16:26:52

标签: c# html regex

我是一名营销人员,正在制作一些正则表达式以使用工具抓取电话号码。我有以下正则表达式,可完美刮除XXX-XXX-XXXX格式的电话号码。这里的问题是页面在6条以上的不同行中都有数字,但是我只想在行包含<span no="telephone">

时进行抓取
((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}

由于该页面的源代码,我尝试过一些获取字符串之间的电话号码的方式,这种方式无法正常工作,我只想尝试一下新的方式。

我的页面来源总是像

<a href="/phone/xxx-xxx-xxxx"  data-toggle="tooltip" data-title="Mobile" >
            <span itemprop="telephone">xxx-xxx-xxxx</span>  

如何实现这一目标。非常感谢您的帮助。确保在标签<span itemprop="telephone">

之后有刮擦

2 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式:

@"(?<=<span itemprop=""telephone"">)((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}(?=</span>)"

正则表达式首先创建look behind,然后寻找:'<span itemprop="telephone">'

然后它使用您已经必须匹配电话号码的正则表达式。

最后,它使用look ahead,查找:'</span>'完成比赛。

答案 1 :(得分:0)

如果我已正确理解,您想知道<span no="telephone">中的号码是否是使用正则表达式的可行电话号码?如果是这种情况,则以下内容将与您的字符串模式相匹配地吐出123-456-7891

string[] phoneNumber = lineContainingNumber.Split('>');

        foreach (string phoneNumberEntity in phoneNumber)
        {
            if (Regex.IsMatch(phoneNumberEntity.Replace(@"</span", ""), @"\d{3}-\d{3}-\d{4}"))
            {
                Console.WriteLine(phoneNumberEntity.Replace(@"</span", ""));
                break;
            }

        }