我尝试使用一些排除项创建电子邮件验证。基本上,忽略这种格式的电子邮件地址,过滤掉所有城市政府和学校:
user@ci...us
和user@..[a-z]{2}.us
GitHub issue提到否定的字符类[^],替换|和字符串锚$的结尾。我怎样才能重写以下内容,哪些方法没有展望?
[a-zA-Z_0-9.-]+<@[a-zA-Z_0-9-]+?\.+[a-zA-Z_0-9.-]+?\.(us|info|to|br|bid|cn|ru)
使用一些正则表达式验证器,这可以使用标准的预测:
(?!.*\@ci\..+?\.us$)(?!.*\@*\..+?\.ca.us$)([a-zA-Z_0-9.-]+@[a-zA-Z_0-9-]+?\.+[a-zA-Z_0-9.-]+?\.(us|info|to|br|bid|cn|ru)
我的第一次尝试使我找到了这个解决方案,它只能部分处理第一个前瞻(我用字边界\b
收紧了顶级域名:
[a-zA-Z_0-9.-]+<@([^c"][^"]+|c[^i"][^+]+|ci[^i"][^i"])[a-zA-Z_0-9-]+?\.+[a-zA-Z_0-9.-]+?\.(\bus\b|\binfo\b|\bto\b|\bbr\b|\bbid\b|\bcn\b|\bru\b|\bu\b)
答案 0 :(得分:0)
这是我能得到的尽可能接近,但它让我在那里:
[a-zA-Z_0-9.-]+<@([^c]+|c(c|ic)+([^ic]|i[^c][^ic]))+(c(c|ic)+(i|ic))+?\.+[a-zA-Z_0-9.-]+?\.(\bus\b|\binfo\b|\bto\b|\bbr\b|\bbid\b|\bcn\b|\bru\b|\buss\b|\bbw\b|\bu\b)
澄清我希望排除Locality domains&amp;公立学区的亲和命名空间。上述内容将排除something@ci.subdomain.us
(以及易于发送垃圾邮件的TLD以.info|to|br|bid|cn|ru|uss|bw|u
结尾),但事实证明,这些地址通常包含4个级别/部分,例如info@ci.boston.ma.us
。 This blog entry给了我一个线索。