【问题标题】:JavaScript regexp match against variable email domainJavaScript 正则表达式匹配可变电子邮件域
【发布时间】:2012-03-04 04:58:48
【问题描述】:

如果输入值,我正在尝试进行客户端检查:

  • 是一个有效的电子邮件地址
  • 拥有正确的域名

我想出了以下代码,但它不起作用:

var userinput = 'dirk@something.com';
var domain = 'somethingelse.com';
domain.replace('.', '\.');
var pattern = new RegExp('/^[a-zA-Z0-9._-]+@' + domain + '$/');
if(!pattern.test(userinput))
{
    alert('not a valid email address, or the wrong domain!');
}

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    使用split()函数,

    emailID.split("@")[1]
    

    【讨论】:

      【解决方案2】:

      分两步完成。首先,使用像 James 推荐的正则表达式来测试有效的(ish)电子邮件地址。其次,确保域与允许的域匹配为Siva suggests

      var userinput = 'dirk@something.com';
      var domain = 'somethingelse.com';
      
      var pattern = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
      if(!pattern.test(userinput) || userinput.split('@')[1] != domain)
      {
        alert('not a valid email address, or the wrong domain!');
      }​
      

      你可以摆弄它here

      【讨论】:

      • 这是一个很好的解决方案。我的 JS 不够流利,无法提出这个,谢谢。
      【解决方案3】:

      通常我会在这里吐出一些正则表达式,但我认为检查电子邮件和域的最有效方法已经由比我聪明的人炮制了。

      检查 How to Find or Validate an Email Address 进行电子邮件验证。

      由此,您可以限制正则表达式并检查有效域。

      【讨论】:

        【解决方案4】:

        new RegExp() 的参数在 /regex here/ 或引号 "regex here" 中,但不是两者。斜杠形式自己生成一个正则表达式,根本不需要new RegExp(),所以它通常只单独使用,带引号的字符串与new RegExp()一起使用。

        var pattern = new RegExp('^[a-zA-Z0-9._-]+@' + domain + '$');
        

        电子邮件地址可能比您在此处所允许的要复杂得多。如果您真的想允许所有可能的合法电子邮件地址,您将需要比这更多的东西,Google 搜索会产生很多选择。

        如果您真正需要做的就是检查域是否与特定域匹配,即使没有正则表达式也容易得多。

        var userinput = 'dirk@something.com';
        var domain = 'somethingelse.com';
        var testValue = "@" + domain.toLowerCase();
        if (userinput.substr(userinput.length - testValue.length).toLowerCase() != testValue) {
            // Incorrect domain
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多