我正在使用电子邮件验证脚本,除非用户尝试输入域中只有两个字符的地址,例如test@me.com或temp@ip.com,否则一切都很顺利
验证然后触发错误,我已查看但无法查看此行为的目标位置,代码如下...
function validate_youremail()
{
var isvalidemailflag = 0;
if(jQuery("#property_mail_email").val() == '')
{
isvalidemailflag = 1;
}else
if(jQuery("#property_mail_email").val() != '')
{
var a = jQuery("#property_mail_email").val();
var filter = /^[a-zA-Z0-9]+[a-zA-Z0-9_.-]+[a-zA-Z0-9_-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{2,4}$/;
//if it's valid email
if(filter.test(a)){
isvalidemailflag = 0;
}else{
isvalidemailflag = 1;
}
}
if(isvalidemailflag)
{
youremail.addClass("error");
youremailInfo.text("Please Enter valid Email Address");
youremailInfo.addClass("message_error2");
return false;
}else
{
youremail.removeClass("error");
youremailInfo.text("");
youremailInfo.removeClass("message_error");
return true;
}
它可能直接盯着我,但这是漫长的一天:)有人能指出我正确的方向吗?
答案 0 :(得分:2)
@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+
表示“@”然后是“其中一个或多个字符”,然后是“其中一个或多个字符,点和连字符”,然后是“其中一个或多个字符”。
这使它“至少有三个字符”。
您可能希望将(该代码段的)中间部分更改为零或更多(即*
而不是+
)。
表达式仍然破裂。跳出来的问题是它拒绝+
之前部分中@
的电子邮件地址。
答案 1 :(得分:1)
根据RFC2822标准进行电子邮件验证。
模式:/[a-z0-9!#$%&'*+/=?^_
{|}〜 - ] +(?:。[a-z0-9!#$%&'* + / =?^ _ {|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g
来源:RegExr
请注意,RFC2822标准不允许在电子邮件地址中使用大写字符,但您可以根据自己的目的轻松调整它。
答案 2 :(得分:1)
我建议你使用另一个正则表达式。
此正则表达式已从PHP source code written in C.
中提取/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i
.test('temp@ip.com');