编辑:“我的网站”仅向Gmail和Google Apps用户提供服务,并且确实要确保其他免费电子邮件用户在启动oauth配对时不会收到错误消息。
所以这是交易:我试图弄清楚这是Gmail / Google Apps地址,还是试图阻止流行的免费邮件用户尝试订阅。
我想阻止所有属于Gmail,Hotmail,Yahoo等的“免费”电子邮件地址订阅我的网站。
如何在javascript中正确执行此操作?
这是我开发的第一个脚本:
var domain_matche = /@(.*)$/.exec(email);
var domain_name = domain_matche[1].substring(0, domain_matche[1].indexOf(".", 0))
if (domain_name == "hotmail" || domain_name == "yahoo" ) {
alert("not a valid email");
}
但是它不会检测到诸如[email protected]或[email protected]之类的电子邮件。
能否请你帮忙?非常感谢!
最佳答案
首先,我建议不要这样做。由于yahoo确实提供了高级付费服务(我自己使用该服务,如果您不允许我注册,将会很烦恼)。
另外,您还需要在客户端(JS)和服务器(PHP,ASP.net或您使用的任何设备)上都实现,因为我可以轻松禁用Javascript,然后您的检查将不会执行。
但是,如果您知道自己在做什么,并且希望它正确完成,请先查找“@”,然后再查找“。”。并得到他们之间的字符串。
码:// get index of '@'
var index_at = email.indexOf('@');
// get index of the '.' following the '@' and use it to get the real domain name
var domain = email.substring(index_at + 1, email.indexOf('.', idx));
// now use the domain to filter the mail providers you do not like
检查所有子域的代码(对于[email protected]):// get the string after '@'
var after_at = email.substring(email.indexOf('@') + 1);
// get all parts split on '.', so for [email protected] you can check both x and y
var dot_split = after_at.split('.');
for(var i = 0; i < dot_split.length; i++)
// check each dot_split[i] here for forbidden domains