【问题标题】:Customized email Validation in JavascriptJavascript 中的自定义电子邮件验证
【发布时间】:2014-04-07 10:56:35
【问题描述】:

我正在使用正则表达式进行 Javascript 电子邮件验证。

我正在使用下面的函数

function validateEmail(email) { 
     var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

它适用于各种电子邮件验证场景。比如说

validateEmail('m@s'); // return false

但如果我尝试验证类似

validateEmail('m@com.com'); // return true

根据正则表达式,这是正确的。

我需要的是,它还将验证“.”之前和之后的文本“com”,这样两个文本不应该相同。

任何帮助将不胜感激... :)

【问题讨论】:

  • ..但是com.com是一个真实的网站?
  • 为什么? com.com 是一个真实的域,人们可以在其中拥有一个电子邮件帐户。
  • info.info这样的东西
  • 这只是一个场景,它可以是任何域文本,例如“xyz@gmail.gmail”或任何相同的文本。
  • 我真的不担心 JS 电子邮件验证...基本验证就足够了 - 如果您需要用户提供真正有效的电子邮件地址 - 通过电子邮件强制注册/登录...

标签: javascript regex validation email-validation


【解决方案1】:

我在上面的代码中做了一些外观上的改变,它可以工作.. :)

以下是更改后的功能,其中重新检查“@”之后但“.”之前和之后的文本是否有效电子邮件

function validateEmail(email) { 
   var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;  
     if(re.test(email)){   
       var afteratRate = email.substr(email.indexOf("@") + 1); 
       var spmail = afteratRate.split(".");
       if(spmail[0] === spmail[1]){
           return false;
        }
    }
    return re.test(email);
}

然后测试以下场景

validateEmail('m@.com'); // gives false
validateEmail('m@s.com'); // gives true
validateEmail('test@gmail.com'); // gives true
validateEmail('test@com.com'); // gives false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 2020-02-23
    • 2020-10-20
    • 2012-01-03
    • 2018-10-09
    相关资源
    最近更新 更多