Oracle 正则表达式 仅匹配以下格式的美国电话号码。
(NNN) NNN-NNNN
或NNN-NNN-NNNN
或NNNNNNNNNN
我已经尝试过并想出了这个:
with test as
(
select '(444) 123-6780' as testcol from dual
union
select '444123-6780' from dual
union
select '6741236780' from dual
union
select '(445) 123-6781' from dual
union
select '447-127-6787' from dual
union
select '447-127-3333333333' from dual
)
SELECT *
FROM test
WHERE REGEXP_LIKE(testcol, '^\(?\d{3}\)?([[:blank:]|-])?\d{3}-?\d{4}$');
结果 :
(444) 123-6780 -- valid
(445) 123-6781 -- valid
444123-6780 -- not valid
447-127-6787 -- valid
6741236780 -- valid
如您所见,我收到了444123-6780
( NNNNNN-NNNN
) 格式,这是我不需要的。
有没有办法阻止上述格式不匹配?