【问题标题】:Create Perl Regex to "Not Match" Specific Emails创建 Perl 正则表达式以“不匹配”特定电子邮件
【发布时间】:2019-04-28 08:43:03
【问题描述】:

为了帮助打击垃圾邮件,我在 cPanel 中为一个域设置了多个“全局电子邮件过滤器”,但是这些过滤器现在似乎覆盖了我已有的 cPanel“默认地址 = 丢弃”设置!所以我现在正在尝试重新创建规则,以便丢弃不存在的用户@mydomain.co.uk(垃圾邮件)电子邮件。

电子邮件至(匹配 PERL 正则表达式):

如果不匹配此 john 或 peter 或 luke @mydomain.co.uk

行动:

丢弃

*所以 john123@mydomain.co.uk 将是 MATCH 并被丢弃但

john@mydomain.co.uk 或 peter@mydomain.co.uk 或 luke@mydomain.co.uk 将不匹配并被接受交付。

我希望你能为我创建这个“PERL”正则表达式。

我已经尝试过了,但它不起作用 -

(?!.*(john|peter|luke@mydomain.co.uk))

【问题讨论】:

    标签: regex perl cpanel


    【解决方案1】:
    ^(?!(?:john|peter|luke)\@mydomain\.co\.uk\z)
    

    这匹配除

    之外的所有内容
    • john@mydomain.co.uk
    • peter@mydomain.co.uk
    • luke@mydomain.co.uk

    ^(?!(?:john|peter|luke)\@(?:local\.)?mydomain\.co\.uk\z)
    

    这匹配除

    之外的所有内容
    • john@mydomain.co.uk
    • peter@mydomain.co.uk
    • luke@mydomain.co.uk
    • john@local.mydomain.co.uk
    • peter@local.mydomain.co.uk
    • luke@local.mydomain.co.uk

    您可以通过将整个包裹在 (?i:...) 中来使这些不区分大小写。

    【讨论】:

    • 太好了,它有效!我对此略有改进,以允许我的子域之一不匹配,“john@local.mydomain.co.uk”现在与此不匹配:^(?!(?: john|peter|luke)\@(?:(local\.))?domdom\.co\.uk\z) 它似乎部分工作,但我不确定它现在的语法是否完全正确为 john@.mydomain.co.uk 生成不匹配项(注意 @ 和 mydomain 字符串之间的 .dot)。只有 john@[server.]mydomain.co.uk 应该产生不匹配。关于我应该如何纠正它的任何想法?
    • @Mark,您提供的模式有一组不必要的捕获。但除此之外,它将匹配除不应该匹配的六个字符串之外的所有内容(前面提到的加上带有local. 的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多