javascript中的字母数字电子邮件验证

时间:2013-12-19 05:18:19

标签: javascript regex

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

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

2 个答案:

答案 0 :(得分:2)

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

(?=[^@]*[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

答案 1 :(得分:0)

以下是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 !");
    }
   }

删除清单中不需要的特殊字符。