5

我有以下工作正则表达式来提取大量不同格式的电话号码。

见这里:http: //jsfiddle.net/SB5Ly/4/

var regex = new RegExp(
            "\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+",
            "g"
        );
....

(如果脚本未加载,请按顶部菜单中的“运行”按钮)

正如您在示例中看到的(通过链接),最后 2-3 个电话号码格式(var phoneNumbers)与使用的正则表达式不匹配。您可以测试在脚本中修改它并运行它的正则表达式。

所以我需要一个匹配所有枚举电话号码格式的正则表达式(从整个网页(document.body.innerHTML)中提取它们)。

4

1 回答 1

3

我不知道你想有多规范,但这符合你所有的例子:

var regex = new RegExp("\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", "g");

查看此正则表达式的现场演示


正则表达式的一个小错误:当想要在字符类中包含文字破折号时,要么对其进行转义,要么将其放在首位或放在最后。

你有[\\s-.],这是不正确的。它应该[\\s.-][-\\s.][\\s\\-.]

于 2013-09-25T14:06:34.190 回答