繁体   English   中英

使用正则表达式排除记录

[英]Excluding records using regex

我正在尝试排除具有任何名称并以@abcd.in 或@abcd.live 结尾的email_id,并且只包括具有手机号码的电子邮件,但不确定这是否是我正在使用的正确正则表达式,可以你帮忙?

我用来过滤的语句如下

(NOT(lower(`table`.`user_email`) like '[a-z].*@Abcd.in$'|'[a-z].*@Abcd.live$')

如果你想基于正则表达式进行过滤,你应该使用REGEXPREGEXP_LIKE (两者都是同义词)。 假设您只想排除提到的两个域,您可以使用:

SELECT *
FROM yourTable
WHERE email NOT REGEXP '[a-z]+@Abcd\.(in|live)$';

假设您还想通过将某些 email 模式列入白名单来增强上述功能,您可以再次调用REGEXP

我可能会做这样的事情:

SELECT *
 FROM mytable
  WHERE SUBSTRING_INDEX(user_email,'@',-1) IN ('Abcd.live','Abcd.in')
   AND SUBSTRING_INDEX(user_email,'@',1) REGEXP '[0-9]'

使用SUBSTRING_INDEX()通过使用@作为分隔符来分隔 email 名称和域。 第一个条件只是用IN过滤域,所以除了定义的域之外,它将被省略。 然后第二个条件是使用REGEXP检查 email 名称中是否存在数值。

演示小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM