这个正则表达式有什么问题

时间:2011-07-28 18:53:23

标签: javascript jquery

我有姓名(fname + lname)和电子邮件,我有他们的正则表达但他们没有验证

var  fnlnregex = /^[\w\/\s\.-]+$/;  //first name + last name   
var usremailregex = /^[@.\w]+$/;

if(!usremailregex.test($("#Eml").val())){
        flag = false;
        $("#Eml").attr('class','red');  
    }else{
        $("#Eml").attr('class','');
    }

但它没有验证电子邮件字段,它正在将以下数据视为正确     //如果我在电子邮件字段中仅输入“abc”,则表示没有错误

fnlnregex - 这不应该允许数字,但在我的相同,如果名称正则表达式允许。我该如何纠正 2

4 个答案:

答案 0 :(得分:1)

您的usremailreg永远无法验证电子邮件。它接受任何至少包含一个.@a-z0-9A-Z字符的内容。所以@@@@@@@@@完全有效。

尝试使用此大小来验证符合RFC822的地址:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

答案 1 :(得分:1)

/^[@.\w]+$/表示:

start of string - one or more of a combination of @, any character or word boundary - end of string

我必须说它没用。 .表示已包含@\w的任何字符。

至于为什么abc匹配 - 好吧,它匹配beginning - any character - end

您正在寻找的是:

/^[a-z0-9]+@[a-z0-9]+\.[a-z]+$/i

转换为:

beginning - one or more letters or digits - a @ - one or more letters or digits - a . - one or more letters - end

i表示它不区分大小写。

答案 2 :(得分:0)

usremailregex:如果字符串仅由'@','。'或单词字符组成,则允许它。这对abc有效。

答案 3 :(得分:0)

在第一个正则表达式中,你使用\ w简写,它匹配任何单词字符,包括数字;你可以试试:

/^[A-Za-z\/\s\.-]+$/

如果您只想要字母字符。