javascript regexp与可变电子邮件域匹配

时间:2012-03-04 04:58:49

标签: javascript regex

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

  • 是有效的电子邮件
  • 拥有正确的域名

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

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 e-mailadres, or the wrong domain!');
 }

任何可以帮助我的人?非常感谢!

4 个答案:

答案 0 :(得分:3)

使用split()功能,

emailID.split("@")[1]

答案 1 :(得分:1)

通常情况下,我会在这里发布一些正则表达式,但我认为检查电子邮件和域名的最有效方法已经被比我更聪明的人编造。

点击此链接进行电子邮件验证: http://www.regular-expressions.info/email.html

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

答案 2 :(得分:1)

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
}

答案 3 :(得分:1)

如何分两步完成。首先,使用像James建议的正则表达式来测试有效的(ish)电子邮件地址。其次,确保域名与Siva建议的域名匹配。

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 e-mailadres, or the wrong domain!');
}​

你可以摆弄它here