我认为很多人以前做过类似的开发任务:
我想查看人们的电子邮件地址是否只匹配@ tomtom.com或@ stream.com。
目前,我脑子里有两个解决方案:
使用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
}
使用匹配
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
}
我仍然认为我还没有考虑所有的细节。有什么建议吗? 谢谢
答案 0 :(得分:3)
如果只允许人们为这两个地址输入电子邮件,您应该只收集用户名,然后允许他们使用radiobuttons选择@ tomtom.com或@stream.com。
如果您仍想使用javascript路线,那么您的正则表达式可以组合成一个声明
var emailPatt=/@(tomtom|stream).com/gi;
if(emailPatt.test(eo.data.username))
{
//Login
}
答案 1 :(得分:2)
这个怎么样......
var emailRegex = /^([0-9a-z])+@(tomtom|stream)\.com$/ig;
if (emailRegex.test(emailRegex)) {
// Login
}
而不是执行.match(...) - 你会得到一个字符串,我们可以执行.test(...)来查看是否匹配。
此模式保证以下内容:
您可以进一步自定义,确保用户名必须至少包含3个字符,您可以在电子邮件地址中使用下划线或破折号等。
要回答您的问题,两种解决方案都无效。原因:
有关正则表达式的更多信息:http://www.regular-expressions.info/reference.html