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 - 帮助我的正则表达式电话号码和区号的主要内容,如果未能解决你的问题,请参考以下文章