regex - 用于匹配美国电话号码格式的 Oracle 正则表达式

标签 regex oracle regexp-like

Oracle 正则表达式仅匹配以下格式的美国电话号码。

(NNN) NNN-NNNNNNN-NNN-NNNNNNNNNNNNNN

我已经尝试过并想到了这个:

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/

相关文章:

sql - 如何在 oracle sql 脚本中创建过程并在脚本中使用它?

sql - 为什么我的 Perl CGI 脚本找不到 Oracle DBD?

regex - 301 将旧网址重定向到移动网站中的新网址

regex - PostgreSQL regexp_replace() 只保留一个空格

c++ - Oracle ODBC 插入失败,没有任何错误诊断

sql - oracle regexp_replace 保留数字和反斜杠

mongodb - 如何在mongodb中实现部分文本匹配的相关搜索

javascript - 正则表达式匹配一组中的 1 个或两个字符,并确保它们不同

正则表达式 - 查找可以找到给定数字的所有组

Java - 匹配任何整数的正则表达式