JavaScript RegExp - 从字符串中提取电话号码

5
我有以下有效的正则表达式,可以提取不同格式的许多电话号码。
请参见此处:http://jsfiddle.net/SB5Ly/4/
var regex = new RegExp(
            "\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+",
            "g"
        );
....

如果脚本没有加载,请按顶部菜单中的“运行”按钮。如您所见,通过链接可以看到示例,最后2-3个电话号码格式(变量phoneNumbers)与使用的正则表达式不匹配。您可以测试修改脚本中的正则表达式并运行它。因此,我需要一个能够匹配所有列出的电话号码格式的正则表达式(以从整个网页(document.body.innerHTML)中提取它们)。
1个回答

3
我不知道你想要多具体的翻译,但这个内容符合你所有的示例:
var regex = new RegExp("\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", "g");

查看此正则表达式的演示


你的正则表达式有一个小错误:当想要在字符类中包含连字符时,需要将其转义或放置在首位。

你使用了[\\s-.],这是不正确的。应该使用[\\s.-][-\\s.][\\s\\-.]


我必须指出一个问题,在您提供的实时演示中,所有字符串都匹配,但是当我运行上面提供的脚本时,下一个字符串不匹配: (0490)260722 (0)442207724 +33 (0)442207724 你能帮我解决这个问题吗? - Lorand Tamas
我已经查看了您遇到问题的新示例。我尝试了它们,它们适用于新的:请参见实时演示。请告诉我更多关于您如何/匹配什么。 - Bohemian
您可以在此处尝试使用有问题的字符串运行此小脚本:http://jsfiddle.net/ 如果可能,请帮助我仅匹配这些类型的电话号码。让国家代码问题远离我们。它不再是问题了 ;) - Lorand Tamas
我已经编辑了问题。您必须跟随链接查看我在谈论什么。这里有一个小例子,其中包含我想要与超级正则表达式匹配的一些电话号码格式。这些电话号码将出现在一个网页上,我将解析该网页以提取它们。 - Lorand Tamas
我的错,我忘了告诉你要在菜单上按更新按钮才能保存修改 :( 现在我只看到原始版本 谢谢! - Lorand Tamas
显示剩余10条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接