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

PLSQL - help on my regex phone number with area code

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

我有这样一个 phone 号码:

+44 (0)22 3333 4444 from the text that should not be there

我想得到这个:

+4402233334444

所以我制作了以下正则表达式:

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

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

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

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

您可以使用

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

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

参见DB fiddle

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