【问题标题】:Javascript regex- phone numberJavascript 正则表达式 - 电话号码
【发布时间】:2016-08-18 02:45:32
【问题描述】:

我正在尝试查找与(0[2,3,6,7,8,or 9]) XXXXXXXX 格式的电话号码匹配的表达式,其中 X 是一个数字,空格必须匹配,括号也必须匹配

我现在的表达是:

/\b\(0[236789]\)\s(\d){8}\b/g

但它没有获取任何测试号码,例如

(02) 12345678

我知道正则表达式电话号码问题会在 SO 上发送垃圾邮件。我一直在阅读我能找到的所有内容,这就是我做到这一点的方式,但我一生都无法弄清楚。

【问题讨论】:

  • \b 代表单词边界可能您正在测试的字符串不以单词边界开头和结尾。
  • 啊,我以为这是为了确保您的模式处于被测试值的开头。
  • 那将是/^\(0[236789]\)\s(\d){8}$/,其中^ 代表字符串开始,$ 代表字符串结束。

标签: javascript regex


【解决方案1】:

只要去掉两端的 \b 就可以了

/\(0[236789]\)\s(\d){8}/g

这将匹配多个电话号码,不确定是否是您想要的。如果您想确保从头到尾的整个字符串是完整的电话号码,您可以这样做

/^\(0[236789]\)\s(\d){8}$/

这将匹配 (02) 12345678,并且如果字符串周围有任何字符将不起作用。

【讨论】:

  • 我犯了这么一个简单的错误,但我不知道,谢谢你,只是测试它,一切都恢复正常了。
【解决方案2】:

嗯,这是我能想到的最好的了。

/^[+]?(1\-|1\s|1|\d{3}\-|\d{3}\s|\d{2}\-|\d{2}\s|)?((\(\d{3}\))|\d{3})(\-|\s)?(\d{3}) 
(\-|\s)?(\d{4})$/g

这应该支持像

这样的所有组合
  1. (541) 754-3010
  2. +1-541-754-3010
  3. 1-541-754-3010
  4. 001-541-754-3010
  5. 191 541 754 3010
  6. +91 541 754 3010

等等。

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2011-05-08
    • 2016-02-02
    • 2011-12-14
    • 2013-05-26
    相关资源
    最近更新 更多