3种格式的电话号码语言的正则表达式

时间:2013-11-04 21:12:16

标签: regex

假设您的用户输入了多种格式的10位数电话号码,例如

xxxxxxxxxx, 
xxx-xxx-xxxx, 
(xxx)xxx-xxxx. 

为此语言编写正则表达式。提示:您可能希望使用联合分隔不同的格式?

我想出了这个表达

\d{10} U \d{3}-\d{3}-\d{4} U (\d{3})\d{3}-\d{4}

是否有任何评论上述表达式是否正确?

3 个答案:

答案 0 :(得分:0)

我可能会这样做:

\(?\b[0-9]{3}\)?[-/\s]?[0-9]{3}[-. ]?[0-9]{4}\b

哪种格式可以捕获:

XXXXXXXXXX
XXX-XXX-XXXX
(XXX) XXX-XXXX
(XXX)XXX-XXXX
(XXX) XXX XXXX
XXX/XXX-XXXX

答案 1 :(得分:0)

请参阅http://regex101.com/r/tK6mD4

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

使用|代替“或”,没有空格,使用()转义\

使用

进行测试
(888)123-3456     - match
8881231234        - match
888-123-1234      - match
888-1234567       - no match

注意 - 此表达式完全匹配(并且仅)您要求的内容。 “所有有效电话号码”的良好正则表达方式完全不同 - 您可以谷歌搜索并找到大量答案。

答案 2 :(得分:0)

http://net.tutsplus.com/tutorials/php/advanced-regular-expression-tips-and-techniques/

/^(1[-\s.])?(\()?\d{3}(?(2)\))[-\s.]?\d{3}[-\s.]?\d{4}$/


    (1[-\s.])?  # optional '1-', '1.' or '1' 
    ( \( )?     # optional opening parenthesis 
    \d{3}       # the area code 
    (?(2) \) )  # if there was opening parenthesis, close it 
    [-\s.]?     # followed by '-' or '.' or space 
    \d{3}       # first 3 digits 
    [-\s.]?     # followed by '-' or '.' or space 
    \d{4}       # last 4 digits 

这是专门针对美国电话号码的 - 因此也会考虑国家/地区前缀。