我正在尝试判断一个字符串是否符合我国的电话号码格式,该格式由区号(可能是两位数字,可能在前面加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}
的错误。
我这里做错了什么?
|
将多个简单模式组合起来,而不是使用一个非常复杂的模式? - Stefan