【问题标题】:Javascript RegExp - extract phone numbers from stringJavascript RegExp - 从字符串中提取电话号码
【发布时间】:2013-10-01 02:49:43
【问题描述】:

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

请看这里:http://jsfiddle.net/SB5Ly/4/

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

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

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

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

【问题讨论】:

    标签: javascript regex phone-number


    【解决方案1】:

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

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

    查看此正则表达式的live demo


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

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

    【讨论】:

    • 感谢您的帮助@bohemian。实际上我忘了提到我也不想提取国家代码。但这对我有很大帮助。如果您可以向我发布另一个正则表达式以提取没有国家代码的电话号码,那将是最好的。也感谢您的评论。
    • 好的,我更改我的代码以使用国家代码。只是出于好奇,您能否提供新的正则表达式来排除国家代码?非常感谢!
    • 我要说明一个问题,在您提供的现场演示中,所有字符串都匹配,但是当我运行上面提供的脚本时,下一个字符串不匹配:(0490)260722 ( 0)442207724 +33 (0)442207724 你能帮我吗?
    • 我可以帮助您解决 vountry cides,但您所说的“排除”到底是什么意思?我会研究你的新例子。
    • 我已经查看了您遇到问题的新示例。我试过它们,它们匹配新的:见live demo。告诉我更多关于你如何/什么匹配
    猜你喜欢
    • 2023-03-16
    • 2016-11-07
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多