我使用下面的查询从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}$')
vktxenjb1#
真实的正确的正则表达式要复杂得多。我不知道How can I validate an email address using a regular expression?链接上的答案是否正确,但它得到了太多的选票,而且似乎Db2至少支持这个相当复杂的表达式。如果它真的适合你,你可以在下面的表格中检查它并通知我们。
SELECT CM_EMAIL , REGEXP_LIKE (CM_EMAIL, '(?:[a-z0-9!#$%&''*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\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-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])') AS IS_VALID FROM ( VALUES 'abc123@mail.com' , 'abc@mail' , 'abc.def@mail#.com' , 'abc-@mail.com' ) table_info (CM_EMAIL)
| CM_电子邮件|是否有效|| - -|- -|| abc123@mail.com |真的|| abc@邮件|假的|| 电子邮件地址:|假的|| abc-@mail.com | 真的|
1条答案
按热度按时间vktxenjb1#
真实的正确的正则表达式要复杂得多。
我不知道How can I validate an email address using a regular expression?链接上的答案是否正确,但它得到了太多的选票,而且似乎Db2至少支持这个相当复杂的表达式。如果它真的适合你,你可以在下面的表格中检查它并通知我们。
| CM_电子邮件|是否有效|
| - -|- -|
| abc123@mail.com |真的|
| abc@邮件|假的|
| 电子邮件地址:|假的|
| abc-@mail.com | 真的|