正则表达式不适用于DB2数据库中的电子邮件地址验证



我使用以下查询从DB2数据库中选择有效的电子邮件地址。

Select CM_ID, CM_EMAIL from table_info where REGEXP_LIKE (CM_EMAIL,'^[A-Za-z]+[A-Za-z0-9.]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4}$')

真正正确的正则表达式要复杂得多
我不知道"如何使用正则表达式验证电子邮件地址"中的答案是否正确?链接是正确的,但它得到了太多的选票,而且看起来,Db2至少支持这个相当复杂的表达式。如果它真的适合你,你可以在下面的表格中检查并通知我们。

SELECT 
CM_EMAIL
, REGEXP_LIKE (CM_EMAIL, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|\[x01-x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])).){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21-x5ax53-x7f]|\[x01-x09x0bx0cx0e-x7f])+)])')
AS IS_VALID
FROM 
(
VALUES
'abc123@mail.com'
, 'abc@mail'  
, 'abc.def@mail#.com'
, 'abc-@mail.com'
) table_info (CM_EMAIL)
CM_EMAILIS_VALID
abc123@mail.comtrue
abc@mailfalse
abc.def@mail#.comfalse
abc-@mail.comtrue

最新更新