允许有效域的Javascript验证
正在寻找验证输入域是否正确的方法允许有效域的Javascript验证,javascript,validation,ecmascript-6,Javascript,Validation,Ecmascript 6,正在寻找验证输入域是否正确的方法 检查数组中的项以查看有效的域名 纠正打字错误,并在发现的打字错误中提出建议(如有人打字)june@gamil.com输出应该是您的意思是june@gmail.com 有效电子邮件地址 首先。last@example.com 你的名字。aaa@gmail.com yourname@yahoo.co.in 无效电子邮件示例 yourname@gamil.com(打字错误) yourname@gmail.co(顶级域不正确) yourname@yaho.com(雅虎地
这个问题的用例很容易检测不正确的已知域名。我尝试搜索可用的解决方案,但没有找到任何解决方案。好吧,到目前为止,所有的例子都有疑问:
co
是一个有效的TLD,我肯定gamil.com
和yaho.com
确实存在。除非你有一个广泛的已批准域名的白名单,否则这听起来是不可能做到的。据我所知,gmail.co不是一个有效的TLD。。。以及该限制,即仅允许。com只适用于gmail在你尝试重新发明轮子之前,你有没有检查过这方面是否有一个声誉良好的npm软件包?我没有找到任何软件包
function checkForDomainTypo(userEmail) {
// validate following domain also allow private domain i.e. email@abc.com , email@def.com are valid too
const domains = ['gmail.com', 'hotmail', 'outlook', 'yahoo', 'icloud', 'mail', 'zoho'];
// note gmail can only have .com as thats the only one available whereas yahoo can have yahoo.com as well as yahoo.co.uk
const [leftPart, rightPart] = userEmail.split('@');
// Looking to find typos like gamil.com, gmaill.com, gmal.com, yaho.com, and suggest correct email address
var reg = /^([\w-\.]+@(?!gmail.com)(?!yahoo.com)(?!hotmail.com)([\w-]+\.)+[\w-]{2,4})?$/
if (reg.test(email)){
}
}