【发布时间】:2019-05-20 04:24:59
【问题描述】:
我正在尝试查看字符串是否与我所在国家/地区的电话号码格式匹配,即区号(前面可能有也可能没有 0,也可能在括号之间的两位数字)后跟 8 位或 9 位数字其中最后 4 位数字之前可能有一个破折号。 以下是一些有效的格式:
'00 00000000'
'000-000000000'
'000 00000-0000'
'00 0000-0000'
'(00) 0000-0000'
'(000) 000000000'
到目前为止,这是我的工作表达式:
p = /0?\d{2}\s?-?\s?\d{4,5}\s?-?\s?\d{4}/
我尝试使用条件来查看区号是否在 /?(\() 0?\d{2}\)|0?\d{2} \s?-?\s?\d{4,5}\s?-?\s?\d{4}/ 的括号内,但出现 (repl):1: target of repeat operator is not specified: /?(\() 0?\d{2}\)|0?\d{2} \s?-?\s?\d{4,5}\s?-?\s?\d{4} 错误。
我在这里做错了什么?
【问题讨论】:
-
你能举一些电话号码包含括号的例子吗?
-
当你说 9 位数字时,你的意思是 4 位数字,破折号,然后是 4 位数字吗?
-
刚刚添加了示例。
-
可以是4位短划线后4位,也可以是5位短划线后4位。
-
我已经发布了一个解决括号问题的答案,请随时查看
标签: regex ruby regex-lookarounds regex-group regex-greedy