【问题标题】:PHP regex for letters followed by numbers followed by "hotmail.com"字母后跟数字后跟“hotmail.com”的PHP正则表达式
【发布时间】:2014-04-29 13:09:32
【问题描述】:

我有一个非常具体的要求来阻止机器人攻击我的网站。他们正在使用以下表单的电子邮件地址加入和注册:

[first_name][numbers]@hotmail.com

例如samuel7348@hotmail.com

谁能给我正则表达式来匹配这个,以便我可以在注册时阻止他们?

【问题讨论】:

  • 您也将阻止合法用户。您是否考虑过实施蜜罐?见链接 - stackoverflow.com/questions/8873961/…
  • @MikeBrant 所说的。去一个蜜罐,和/或实现一个simple CAPTCHA。使用您当前的方法,您不妨完全阻止 hotmail。
  • 我的网站使用验证码。通过一些研究,您可以构建自己的验证码系统,或者您可以实施其他人的系统。无论如何,验证码是一个很好的解决方案,它可以阻止机器人,但不会阻止使用“lettersNumbers@hotmail.com”的真实用户您还可以考虑查看列入黑名单的 IP 地址列表并添加一个脚本来检查这些 IP 地址访问您的页面。
  • 因为这是流行的免费邮件服务上基本上所有电子邮件的标准格式 - 您将通过您的示例/请求捕获几乎所有使用 hotmail 的人。
  • 为什么不双重选择加入?

标签: php regex


【解决方案1】:

试试这个 -

^[a-zA-Z]+[0-9]+@hotmail\.com$

演示here.

【讨论】:

  • some.day.ill.be.saturday.night1995@hotmail.com
  • @salathe 但问题是针对 [first_name][numbers]。仅针对该特定要求。
  • @Kamehameha,确实......我的观点完全正确。您的正则表达式与我的电子邮件地址匹配,但它不应该匹配。
  • @seano,你需要在正则表达式中使用分隔符 (/),就像这样,`preg_match('/[a-zA-Z]+[0-9]+@hotmail\.com /',$user_email)'
  • 正如这里许多人已经建议的那样,我强烈建议您不要使用这个正则表达式。它将阻止许多合法用户注册。电子邮件地址为somename followed by numbers@hotmail.com 非常常见
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
相关资源
最近更新 更多