【问题标题】:JavaScript Validation for top level domain of email address电子邮件地址顶级域的 JavaScript 验证
【发布时间】:2018-01-15 10:22:28
【问题描述】:

我正在尝试创建一些 JavaScript 验证以仅允许输入电子邮件地址的顶级域。例如(@gmail.com)

我已经使用下面的 sn-p 来尝试对输入进行表单验证,但是它仍然允许输入完整的电子邮件地址。例如(mark@gmail.com)

function isEmailDomain(emailDomainVar) {
  var regEmail = new RegExp('@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/');
  return regEmail.test(emailDomainVar);
}

提前感谢您对此问题的任何意见!

【问题讨论】:

  • 这对你有用 ^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$跨度>
  • 似乎对我不起作用:(另外,如果可能的话,希望拥有更多的域,而不仅仅是 gmail
  • 如果您有一个要允许的域的固定列表,那么为什么首先使用正则表达式...将它们放入一个数组中,然后检查用户输入的内容是否是存在于数组中。 (您是先将前导 @ 从用户输入中拆分出来,还是将所有值插入到带有前导 @ 的数组中 - 由您决定……)
  • 多亏了下面的答案,我终于让它工作了。我的验证规则中缺少符号 ^。我不希望它限制特定域名的原因是,输入字段的目的是阻止电子邮件地址的第一部分,例如电子邮件 josh@gmail.com 中的“Josh”。我想我在最初的解释中对此有点不清楚,所以对此我深表歉意,但感谢您的所有意见!

标签: javascript email


【解决方案1】:

有一个符号用于匹配输入的开头:^。只需将其添加到正则表达式的开头即可:

function isEmailDomain(emailDomainVar){
  var regEmail = /^@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;

  return regEmail.test(emailDomainVar);
}

这里是MDN docs ref 供进一步阅读。

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 2013-12-20
    • 2018-03-13
    • 2011-06-14
    • 2012-03-07
    • 2014-06-12
    • 1970-01-01
    • 2014-03-19
    • 2011-07-05
    相关资源
    最近更新 更多