PLSQL - 帮助我的正则表达式电话号码和区号

Posted

技术标签:

【中文标题】PLSQL - 帮助我的正则表达式电话号码和区号【英文标题】:PLSQL - help on my regex phone number with area code 【发布时间】:2021-08-30 18:20:13 【问题描述】:

我很难在 PL/SQL 下找到正确的正则表达式,但我的正则表达式通常很好

我有一个这样的电话号码:

+44 (0)22 3333 4444 来自不应该存在的文本

我想得到这个:

+4402233334444

所以我做了以下正则表达式:

/[^+\d]|\s/g

它在https://regexr.com/ 网站上运行良好,但在我的 PL/SQL 查询中却不行,它给了我相同的结果

我尝试使用 oracle 文档,但没有成功 https://www.techonthenet.com/oracle/regexp_like.php

【问题讨论】:

【参考方案1】:

\d 和其他速记字符类不应在括号表达式中使用。

你可以使用

SELECT 
  REGEXP_REPLACE(
    '+44 (0)22 3333 4444',
    '[^+0-9]',
    ''
) As Result FROM dual;

其中[^+0-9] 匹配除+ 和数字以外的任何字符。

请参阅DB fiddle。

请注意,[^+0-9] 已经匹配任何空白字符,因为除 + 之外的非数字字符也匹配 \s 匹配的内容,因此您可以安全地从您的正则表达式中省略 |\s

【讨论】:

天哪,我试图让它变得复杂!它就在我眼前谢谢你的帮助!

以上是关于PLSQL - 帮助我的正则表达式电话号码和区号的主要内容,如果未能解决你的问题,请参考以下文章

js验证电话号码(包括手机,固定电话,带区号,不带区号))

正则表达式:邮箱格式和手机号(3-4位区号,7-8位直播号码,1-4位分机号)

需要一个js正则 手机与电话都可以验证的

正则表达式

js正则表达式电话号码验证

java:正则表达式