【问题标题】:Phone number regular expressions exact format电话号码正则表达式精确格式
【发布时间】:2016-01-12 20:21:20
【问题描述】:

我正在寻找可以匹配任何这些电话号码格式但仅匹配这些格式的正则表达式。例如, (999-999-999 不应该工作。我知道如何使用 ? 作为可选但我希望第二个 ) 仅在数字以 ( 开头时是强制性的,如果数字是第二个 ) 不应该是可选的不以 ( 开头。此外,只要有黑色空格,就可以有无限数量的空格。 (999) 999-999 有效,但 (999 ) 999-9999 无效

999-999-9999
999 999 9999
999 999-9999
9999999999
999 9999999
(999) 999-9999
(999) 999 9999

【问题讨论】:

  • 您需要展示您的尝试。即使你只是编造一些看起来有点像正则表达式的东西。但是您需要付出一些努力。
  • Phone validation regex的可能重复

标签: regex phone-number


【解决方案1】:

我建议给自己买这本书:

http://www.amazon.ca/Regular-Expressions-Cookbook-Jan-Goyvaerts/dp/1449319432/ref=sr_1_1?ie=UTF8&qid=1444846344&sr=8-1&keywords=regular+expression+cookbook

如果您正在为这样一个基本的正则表达式而苦苦挣扎(在网络上几乎随处可见)。这是一本食谱,这意味着可以直接使用书中的解决方案。

从第 249 页开始:

^\(?([0-9]{3})\)?[- ]?([0-9]{3})[- ]?([0-9]{4})

您有三个捕获组:

第一和第二([0-9]{3}) 第三个([0-9]{4})

您可以使用这些捕获组返回电话号码的不同部分。使用非捕获组 (?:) 以提高性能(在这种情况下,除非您使用循环,否则没有必要)。

如果为可选括号\(?\)?

您需要转义括号,因为它用于在正则表达式中进行分组。问号 (?) 使前面的元素或组成为可选的。

使用[- ]? 在数字序列之间留出可选的空格和连字符。

附加说明:这是一个非常通用的正则表达式,因此它应该与任何编程语言兼容。

因此,您应该知道,尽管正则表达式的一般结构几乎相同,但对于更高级/更高级的功能,不同语言实现之间存在显着差异。

下一次,您还应该指定您想要正则表达式的编程语言(例如:PHP、Javascript 等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 2017-05-23
    相关资源
    最近更新 更多