【问题标题】:Alphanumeric email validation in javascriptjavascript中的字母数字电子邮件验证
【发布时间】:2013-12-19 05:18:19
【问题描述】:

我正在使用下面的正则表达式来验证电子邮件是否接受字母数字字符。它适用于以下情况

1) 必须包含至少一个字母 2) 允许字母数字 3) 允许特殊字符.-and _

正则表达式:

/^([a-zA-Z0-9])(([a-zA-Z0-9])*([\._-])?([a-zA-Z0-9]))*@(([a-zA-Z0-9\-])+(\.))+([a-zA-Z]{2,4})+$/i

案例:

1111@gmail.com - allow

aaaa@gmail.com - allow

aa1_aa@gmail.com - allow

预期输出:

1111@gmail.com - not allow because it does not contain alphabets before @

aaaa@gmail.com - allow

a1@gmail.com - allow

1a@gmail.com - allow

aa1_aa@gmail.com - allow

她是 jsfiddle Demo

【问题讨论】:

  • 您从哪里获得电子邮件验证规则?如果您要验证来自外部来源的电子邮件,那么这不是一套很好的使用规则。阅读this article,了解如何验证或查找电子邮件地址。它对使用正则表达式来完成这项任务的一些权衡和缺陷进行了很好的讨论,并提供了很多优秀的正则表达式。
  • 谢谢@FrankieTheKneeMan
  • 在我们的组织中,我们使用 '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA -Z]{2,4}$' 如果您需要,则按照标准
  • 验证电子邮件地址总是很棘手。像this 这样的东西试图支持所有有效的电子邮件地址,这很荒谬,并且会支持许多电子邮件服务器不会接受的一些晦涩难懂的东西。另一方面,流行的框架 Angular.js 使用以下正则表达式,它比你的更宽松:/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/(编辑:与@Raunak Kathuria 使用的正则表达式非常相似)
  • 验证电子邮件地址的最佳方法是向该地址发送电子邮件。

标签: javascript regex


【解决方案1】:

您的正则表达式将完成这项工作,只需在开头添加此内容

(?=[^@]*[A-Za-z])

像这样制作你的最终正则表达式:

/^(?=[^@]*[A-Za-z])([a-zA-Z0-9])(([a-zA-Z0-9])*([\._-])?([a-zA-Z0-9]))*@(([a-zA-Z0-9\-])+(\.))+([a-zA-Z]{2,4})+$/i

(?=exp) 是积极的前瞻。它将尝试在不匹配的情况下找到表达式。前瞻实际上匹配字符,但随后放弃匹配。

(?=[^@]*[A-Za-z]) :将匹配[^@]*[A-Za-z],表示除@ 后跟字母之外的任何内容。所以实际上,如果@ 之前的部分中至少存在一个字母,它将匹配

你可以refer this for look-ahead and look-behind

【讨论】:

    【解决方案2】:

    这是 JavaScript 代码:

    var email_to_check = "1111@gmail.com";
    email_check=email_to_check.substring(0,email_to_check.lastIndexOf("@"));
    var isnum = /^\d+$/.test(email_check);
    var email_regex = /^([a-zA-Z0-9!@#$%^&*(){}|:"<>?\/';\\+\-~]*@[a-zA-z]+\.[a-zA-z]+)$/;
    email_test = email_regex.test(email_to_check);
    if(isnum){
    alert("You must enter aleast an Alphabet !")    
    }else{
        if(email_test){
               /* code if email is right :) */
            alert("This is corrrect email !")
        }else{
    
        alert("Enter valid email address !");
        }
       }
    

    从清单中删除您不想要的特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2023-04-06
      • 2011-10-20
      • 2011-02-16
      • 1970-01-01
      相关资源
      最近更新 更多