如何改进这个正则表达式?

时间:2013-03-07 07:31:54

标签: regex

我写这个正则表达式来识别美国类型的电话号码:

\(?\d{3}\)?(-|\s)\d{3}-\d{4}

适用于以下电话号码:

217-244-2424和 (217)244-2424。

然而,它也适用于不平衡的括号,如(217-244-2424

如何改进正则表达式以确保括号平衡? (我知道有关正则表达式电话号码的问题before,但我找不到我想要的内容。)

2 个答案:

答案 0 :(得分:2)

我会回答你关于正则表达式的具体问题。你可以尝试这样的事情来处理paranthesis:

^(\(\d{3}\)|\d{3})-(\d{3})-(\d{4})$

答案 1 :(得分:0)

我没有测试过,但为什么不使用交替运算符(“|”)?您可以选择同时使用两个括号,也可以不选择任何一个:

(\(\d{3}\)|\d{3})(-|\s)\d{3}-\d{4}