使用“()”识别电话号码以获取区号

时间:2015-05-10 10:15:05

标签: regex phone-number

我需要识别长串的电话号码, 现在我正在使用这个正则表达式

(((\d)(-)?)+){7,15}|\*\d{3,10}|\d{3,10}\*

但是它无法识别这些格式中的任何一种:

(734) 555 1212
(734) 555.1212
(734) 555-1212
(734) 5551212
(734)5551212

with“()”,

如何更改它以支持这些格式?

2 个答案:

答案 0 :(得分:0)

您可以使用此更新的正则表达式:

\(\d{3}\)\s*\d{3}[\s.-]?\d{4}\b|\*\d{3,10}|\d{3,10}\*

请参阅demo

更新部分的说明:

  • \( - 文字圆括号
  • \d{3} - 匹配3位数字
  • \) - 关闭圆括号
  • \s* - 可选空白
  • \d{3} - 3位数
  • [\s.-]? - 0或1个空格或点或连字符
  • \d{4} - 4位数。

答案 1 :(得分:0)

您的正则表达式非常宽松 - 它会将1-2-3-4-5-6-7-识别为有效的电话号码,这当然是误报。如果您希望保持相同的宽容度,请将表达式中的可选短划线-替换为包含括号,空格和短划线的可选字符组:

[(]?(((\d)([() .-]+)?)+){7,18}|\*\d{3,10}|\d{3,10}\*

Demo.

当然,这个表达式会带来更多误报,因为它接受任何看起来与电话号码相近的东西。