我有姓名(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
答案 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\.-]+$/
如果您只想要字母字符。