电话号码正则表达式确切格式

时间:2015-10-14 16:16:18

标签: regex phone-number

我正在寻找一个能够匹配任何这些电话号码格式的正则表达式,但仅限于这些格式。例如,(999-999-999应该不起作用。我知道如何使用?对于可选,但是我希望第二个)只有当数字以(,和第二个)开头时,如果数字不是可选的,则必须是强制性的不能以a开头(。无论哪里有黑色空格,都可以有无限数量的空格。(999)999-999有效,但(999)999-9999不是

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

1 个答案:

答案 0 :(得分:0)

我建议你自己买这本书:

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})

您有三个捕获组:

第1和第2 ([0-9]{3}) 第3 ([0-9]{4})

您可以使用这些捕获组返回电话号码的不同部分。使用非捕获组(?:)来提高性能(在该上下文中除非您使用循环,否则不需要)。

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

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

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

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

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

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