允许有效域的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(雅虎地

正在寻找验证输入域是否正确的方法

  • 检查数组中的项以查看有效的域名
  • 纠正打字错误,并在发现的打字错误中提出建议(如有人打字)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)){
          }
    
        }