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
) 格式,
我不需要。
有什么办法可以阻止上面提到的格式不匹配吗?
最佳答案
REGEXP_LIKE(testcol,'^(\(\d{3}\))([[:blank:]])\d{3}-\d{4}$|^\d{3}(-)\d{3}(-)\d{4}$|^\d{10}$')
关于regex - 用于匹配美国电话号码格式的 Oracle 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14564231/