繁体   English   中英

电子邮件地址检查Javascript

[英]Email address check in Javascript

我想很多人之前做过类似的开发任务:

我想查看人们的电子邮件地址是否只匹配@ tomtom.com或@ stream.com。

目前,我脑子里有两个解决方案:

  1. 使用indexof()函数

     var checkTomTomEmail=eo.data.username.indexOf("@tomtom.com"); var checkStreamEmail=eo.data.username.indexOf("@stream.com"); if (checkTomTomEmail >0 || checkStreamEmail >0 ) { //Run the login code } Else { //Please login with your tomtom or stream email } 
  2. 使用匹配

     var patt1=/@tomtom.com/gi; var patt2=/@stream.com/gi; var checkTomTomEmail=eo.data.username.match(patt1); var checkStreamEmail=eo.data.username.match(patt2); if(indexOf(checkTomTomEmail)> 1 ||indexOf (checkStreamEmail)>1) { //Login } 

我仍然认为我还没有考虑所有的细节。 有什么建议?
谢谢

也许如果只允许人们为这两个地址输入电子邮件,您应该只收集用户名,然后允许他们使用radiobuttons选择@ tomtom.com或@stream.com。

如果您仍想使用javascript路由,那么您的正则表达式可以合并为一个语句

var emailPatt=/@(tomtom|stream).com/gi;

if(emailPatt.test(eo.data.username))
{
    //Login 
}

这个怎么样...

var emailRegex = /^([0-9a-z])+@(tomtom|stream)\.com$/ig;
if (emailRegex.test(emailRegex)) {
    // Login
}

而不是执行.match(...) - 你将获得一个字符串,我们可以执行.test(...)来查看是否匹配。

此模式保证以下内容:

  1. 电子邮件地址的“用户名”部分必须至少具有单个字符(例如,a @ stream.com)
  2. 用户名必须由数字或字母组成(大/小写 - 由于末尾的/ i无关紧要)
  3. 输入必须包含整个电子邮件地址,而不包含前导或尾随空格。 例如,“user@tomtom.com”将失败,它只接受“user@tomtom.com”。)

您可以进一步自定义,确保用户名必须至少包含3个字符,您可以在电子邮件地址中使用下划线或短划线等。

要回答您的问题,两种解决方案都无法解决。 原因:

  1. 用户可以输入“tom@tomtom.com Hello”,它将通过您的两次验证。
  2. 特别是在解决方案#2上,点'。' 是一个正则表达式保留字符,它意味着它将匹配任何东西,因此,如果用户输入“@ tomtom1com”,它将通过...

有关正则表达式的更多信息: http//www.regular-expressions.info/reference.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM