首页 > 解决方案 > 更改 oracle 正则表达式以接受带有连字符“-”的电子邮件域

问题描述

我一直在使用正则表达式来检查 Oracle SQL 查询中的电子邮件验证:

SELECT * 
FROM [Table]
WHERE
   REGEXP_LIKE(
         EMAIL,
         '^('
           -- Unquoted local-part
           || '[a-z0-9!#$%&''*+/=?^_{|}~-]+(\.[a-z0-9!#$%&''*+/=?^_{|}~-]+)*'
           --                               ^^
           --                               Allow a dot but always expect a
           --                               non-dot after it.
           -- Quoted local-part
           || '|"('
             -- Unescaped characters in the quotes
             || '[]' || CHR(1) || '-' || CHR(8) || CHR(11) || CHR(12) || CHR(14) || '-!#-[^-'||CHR(127)||']'
             -- Escaped characters in the quotes
             || '|\\[' || CHR(1) || '-' || CHR(9) || CHR(11) || CHR(12) || CHR(14) || '-' || CHR(127) || ']'
             || ')*"'
           || ')'
           -- Match at symbol at end of local-part
           || '@'
           --Domain Part
           ||'(([A-Z0-9]{1,63})[A-Z0-9]+(-[A-Z0-9]+)*\.){1,8}[A-Z]{2,63}$',
           -- Case insensitive
           'i'
   )

t-online.de ”是一个有效的顶级域地址。如何更改下面的正则表达式域部分,以接受 RFC5322 说“连字符 - 是有效的,只要它不是第一个或最后一个字符”。

'(([A-Z0-9]{1,63})[A-Z0-9]+(-[A-Z0-9]+)*\.){1,8}[A-Z]{2,63}$

谢谢你们

标签: regexoracleemaildns

解决方案


推荐阅读