【问题标题】:PLSQL - help on my regex phone number with area codePLSQL - 帮助我的正则表达式电话号码和区号
【发布时间】: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

【问题讨论】:

    标签: sql regex oracle regexp-replace


    【解决方案1】:

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

    你可以使用

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

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

    请参阅DB fiddle

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

    【讨论】:

    • 天哪,我试图让它变得复杂!它就在我眼前谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多