C# 用于电话号码字符串搜索的正则表达式,适用于每个国家
我想通过我的脚本在谷歌搜索电话号码…所以我需要一些正则表达式来搜索字符串或html中每个国家的电话号码。。。我尝试了下面的正则表达式,但它不起作用`C# 用于电话号码字符串搜索的正则表达式,适用于每个国家,c#,regex,C#,Regex,我想通过我的脚本在谷歌搜索电话号码…所以我需要一些正则表达式来搜索字符串或html中每个国家的电话号码。。。我尝试了下面的正则表达式,但它不起作用` private string findphone(string source) { string my = ""; string phone = ""; string MatchPhoneNumberPattern3 = @"\D(\d{3}\s\d{3}\s\d{4
private string findphone(string source)
{
string my = "";
string phone = "";
string MatchPhoneNumberPattern3 = @"\D(\d{3}\s\d{3}\s\d{4})\D";
MatchCollection mathph3 = Regex.Matches(source, MatchPhoneNumberPattern3);
foreach (Match match4 in mathph3)
{
foreach (Capture capture in match4.Captures)
{
if (my.ContainsKey(capture.Value) == false)
{
phone = capture.Value.ToString();
}
}
}
关于这一点,请帮助我,我想要这样一个适用于每个国家/地区电话号码的正则表达式…plz要做您想做的事情,您首先需要访问ITU(国际电信联盟)网站,了解国家编号计划: 这也是一个很好的资源: 然后,您需要处理许多不同的编号计划,并将它们集成到一个正则表达式中。并且要处理这样一个事实,即人们根据上下文不同地表示电话号码(根据您从何处拨号和拨到何处,可能需要或不需要电话号码的不同组成部分,并且号码的格式可能会更改。例如,所有这些都代表北美的同一用户线路,具体取决于上下文:
- 555-1234
- 1-555-1234
- 206-555-1234
- 1-206-555-1234
- 00-1-206-555-1234(从法国和其他国家直接拨号)
- 0011-1-206-555-1234(从澳大利亚直拨)
- 119-1-206-555-1234(古巴直拨)
- 等等,还有更多
- 206.555.1234
- 206/555.1234
- (206)555-1234
- 206-555-1234
- 等等,更不用说国际标准了,其中数字的前缀是国家代码:
- +1:206-555-1234(NANP)
- +33:xx.xx.xx.xx.xx(法国) 在法国,10位电话号码的第一位数字可能会根据用户当前绑定到的运营商而变化:如果巴黎用户当前正在从PTT获得电话服务,则为01.xx.xx.xx.xx;如果同一巴黎用户已切换到Cegetel,则为71.xx.xx.xx
此外,您还需要提供向后兼容性,因为当号码计划更改时,人们不一定会快速更改他们记录电话号码的方式。您不能这样做。新的电话号码格式会一直出现。如果某个国家的电话号码格式更改了怎么办?我所在国家的电话号码格式不会更改他的九月。
它不起作用
是一个完全无用的问题描述。谷歌有一个用于处理电话号码的开源库()这是几百K,每个国家都有一个单独的格式文件。你不能用正则表达式复制它。请向NSA咨询,一定有办法。这是一个糟糕问题的好答案。