不可否认,我不是Regex的专业人士,但我通常能够找到自己需要的方式。这个虽然真的让我很难过。我试过了六种方法。
我试图查找@ gmail.com地址的所有实例,但有2个地址除外。
gmail域名搜索就像一个魅力:
(\w+([-+.']\w+)*@(gmail.com))
它为 brett@gmail.com 和 smith@gmail.com 创建了一个例外,它真的给了我麻烦。任何见解都会很棒。
答案 0 :(得分:2)
使用负向前瞻和单词边界\b
,如下所示:
(?!smith@)(?!brett@)\b\w+(?:[-+.']\w+)*@gmail.com
(?!brett@)(?!smith@)
不允许仅包含brett
和smith
的电子邮件地址。 注意:在最后添加单词边界就像是一个黑客,因为它可以防止负向前瞻限制在用户名中包含brett
作为前缀的电子邮件,并包含更多文本,例如{{1 }}和brett999
由于每个单词后面的单词边界,现在可以接受这些。仅拒绝仅包含brett.doe
或brett
的用户名 smith
匹配的用户名不能只是\b\w+(?:[-+.']\w+)
或brett
。它包含一个单词边界smith
,以帮助负面前瞻正常工作\b
编辑:根据@ Paurian的评论进行修复。接得好! :)
答案 1 :(得分:0)
如果每封电子邮件都在自己的行中,以下内容适用于我:
^(?=.*?\w+([-+.']\w+)*@gmail.com)(?!^smith@|brett@).*$
通行证:
失败: