oracle - 正确的电子邮件 Oracle
问题描述
我有一个带有电子邮件字段的表格,该字段只能包含以下字符:
'abcdefghijklmnopqrstuvwxyz0123456789。@_- +'
您如何检查电子邮件字段以了解我是否有与我提到的字符不同的字符('abcdefghijklmnopqrstuvwxyz0123456789.@_- +')?
解决方案
这听起来像是正则表达式的完美工作 - 只需检查电子邮件是否包含任何不在您列表中的字符。您可以regexp_like
为此使用:
regexp_like(e_mail, '[^-a-z0-9.@_ +]')
(我已将 a...z 和 0..9 替换为各自的范围 - 更短且更具可读性。请注意,连字符 '-' 必须是初始插入符号 '^' 之后的第一个字符,以表明它是一个文字连字符,而不是字符范围的一部分)。
简单的测试用例:
with v_data(e_mail) as (
select 'xyz@abc.com' from dual union all
select 'xyz(@def.com' from dual union all
select 'ab123-def@gmail.com' from dual
)
select
e_mail,
(case
when regexp_like(e_mail, '[^-a-z0-9.@_ +]') then 'NO'
else 'YES'
end) as is_valid_email
from v_data
然而,一个有效的电子邮件地址可以包含大量的附加字符——例如大写字母。
推荐阅读
- excel - 用于 LastRow 计算的 VBA 宏 Microsoft Excel 中的应用程序定义或对象定义错误
- bash - 从 iCloud 文件夹运行可执行脚本
- c# - 使用正则表达式从自由文本中提取键值
- ansible - 如何按顺序安装ansible yum包
- docker - 在远程连接中使用 rviz “无法连接到任何 X 显示器。”
- haproxy - HaProxy 将源 IP 转发到后端服务器
- r - 多个数据框的列之间的部分匹配字符串
- sql - 消息 102,级别 15,状态 1,第 2 行 '`' SQL Server 管理工作室附近的语法不正确
- git - 创建新分支时git push origin 自动合并到master
- amazon-web-services - AWS Lightsail 上的额外存储