正则表达式^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$
匹配XXX-XXX-XXXX
和XXX-XXXX
形式的字符串(我错过了哪些内容?)。
但它也不匹配(XXX) XXX-XXXX
和(XXX) XXX-XXX-XXXX
(我需要它匹配)。
你能帮我解决一下这个问题吗?
XXX-XXX-XXXX
,
XXX-XXXX
,
(XXX) XXX-XXXX
,
(XXX) XXX-XXXX
没有使它与我不想要的其他字符串格式匹配?
答案 0 :(得分:6)
您的规格有点令人困惑。你的最后两个案例看起来是一样的:
XXX-XXX-XXXX
XXX-XXXX
(XXX)XXX-XXXX
(XXX)XXX-XXXX
(看起来你正试图匹配一个电话号码,是吗?)
假设您的最后一个案例是“(XXX)XXX-XXXX”(区号和常规号之间没有空格,我假设是“?”意味着可选空格)那么您的RegExp几乎是正确的,只需在前面添加两个反斜杠区号代码括号,因此它们匹配为普通字符而不是特殊分组字符:
^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$
请注意,你的正则表达式可能没有正确通过,我注意到堆栈溢出从RE模式中删除了一个反斜杠,我必须输入一个双反斜杠“\\”才能得到一个反斜杠来在消息中
答案 1 :(得分:2)
试试这个:
(\(\d{3}\) )?(\d{3}-){1,2}(\d{4})
答案 2 :(得分:0)
您需要转义括号,如下所示:\(否则,它们不会匹配,而是会捕获。
答案 3 :(得分:0)
^(((\ d {3})?)|(\ d {3} - ))?\ d {3} - \ d {4} $ ^
这将有效。
答案 4 :(得分:-1)
我认为这就是你要找的东西,
/ ^((((([0-9] {3}) - )|((([0-9] {3}))\ S))([0-9] {3}) - ([0-9] {4}))|(([0-9] {3}) - ([0-9] {4})))$ /
它适用于以下模式 XXX-XXX-XXXX,XXX-XXXX,(XXX)XXX-XXXX