我正在使用下面的正则表达式来验证电子邮件以接受字母数字字符。它适用于以下情况
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
答案 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]
,表示@
以外的其他内容,后跟字母表。实际上,如果@
答案 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 !");
}
}
删除清单中不需要的特殊字符。