我需要识别长串的电话号码, 现在我正在使用这个正则表达式
(((\d)(-)?)+){7,15}|\*\d{3,10}|\d{3,10}\*
但是它无法识别这些格式中的任何一种:
(734) 555 1212
(734) 555.1212
(734) 555-1212
(734) 5551212
(734)5551212
with“()”,
如何更改它以支持这些格式?
答案 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}\*
当然,这个表达式会带来更多误报,因为它接受任何看起来与电话号码相近的东西。