【发布时间】:2013-01-28 14:30:05
【问题描述】:
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) 格式,
我不需要。
有什么办法可以阻止上述格式不匹配?
【问题讨论】:
-
有趣的是,您的号码都不是有效的北美电话号码,因为第一个和第四个数字不能是 1。 en.wikipedia.org/wiki/North_American_Numbering_Plan
标签: regex oracle regexp-like