【问题标题】:Regex to reject specific email正则表达式拒绝特定的电子邮件
【发布时间】:2018-01-25 16:54:20
【问题描述】:

我正在尝试编写一个正则表达式来匹配电子邮件,以便它拒绝两个电子邮件地址 test@testdomain.comtes2@testdomain.com 并匹配来自特定域的所有其他电子邮件地址。到目前为止,我已经制作了以下模式:

^(?!test@testdomain.com|tes2@testdomain.com)|(A-Z0-9)[A-Z0-9._%+-]+@testdomain.com$

到目前为止,它能够拒绝我想要阻止的主要电子邮件地址,但它通过它接受所有其他字符串。作为替代方案,我编写了以下正则表达式:

^(?!test|tes2)[A-Z0-9._%+-]+@testdomain.com$

但是,这会拒绝所有以 test 或 tes2 开头的模式。

什么是更好的正则表达式来实现这个场景?

【问题讨论】:

  • but it accepts all other strings through this ...对于其他哪些情况,您的第一个正则表达式失败/不满意?
  • 我的意思是它会拾取除被拒绝的字符串之外的所有字符串,这违背了正则表达式的全部目的。

标签: regex


【解决方案1】:

“修复”你的正则表达式,你需要确保你还在前瞻模式中测试@,以匹配testtes2作为完整的用户名:

^(?!test@|tes2@)[A-Za-z0-9._%+-]+@testdomain\.com$
        ^     ^

记住也要转义一个点。请参阅regex demo

但是,您可能希望减少对用户名部分的限制,只需使用 \S+ 而不是您的字符类:

^(?!test@|tes2@)\S+@testdomain\.com$
                ^^^

another regex demo\S+ 模式匹配除空白字符之外的任何 1 个或多个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2020-02-17
    • 1970-01-01
    • 2011-12-28
    • 2012-01-02
    • 2015-12-03
    相关资源
    最近更新 更多