1

我需要一些帮助来验证电子邮件地址。

我知道允许用户仅填写“ @ .com”的基本验证

但是,我想更进一步,只允许键入 Gmail/Hotmail/Yahoo 等电子邮件地址。

任何帮助将不胜感激,谢谢!

4

1 回答 1

0

您可以在 javascript 中使用正则表达式来进行常见的电子邮件验证,例如:

var validEmail = function(email) {
  var expression = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return expression.test(email);
}

//Usage
if(validEmail('somename@domain.some')){
    //Do something
}

//Return True
console.log(validEmail('somename@domain.some'));

或者只允许Gmail / Hotmail / Yahoo等电子邮件地址:

//Return true if valid email is passed
var validEmail = function(email) {
      var expression = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)([\w-]+\.)+[\w-]{2,4})?$/;
      return !expression.test(email);
    }

//Usage
if(validEmail('somename@gmail.com')){
    //Do something
}

//Return False
console.log(validEmail('somename@domain.some'));
//Return True
console.log(validEmail('somename@gmail.com'));

如果需要,可以向表达式添加更多域,如下所示:

var expression = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)(?!yahoo.co.in)(?!outlook.com)(?!me.com)(?!msn.com)(?!ymail.com)([\w-]+\.)+[\w-]{2,4})?$/;

在这种情况下,我添加了 Yahoo、Hotmail 和一些...

还有一种具有严格验证的变体:

//Return true if valid email is passed
function isEmail(str) {
  var allow = ["gmail.com", "hotmail.com", "yahoo.com"];
  for(var i = 0; i< allow.length; i++) {
    if(str.indexOf(allow[i]) != -1) {
       return true;
    }
  }
  return false;
}

//Return True
console.log(isEmail('somename@gmail.com'));

现场示例它是如何工作的 - https://jsfiddle.net/Coderius/L6gqvy3n/

于 2019-10-25T09:57:14.517 回答