我想验证带有正则表达式的电子邮件。以下代码显示了我使用的正则表达式。然而,表单不接受简单的 anystring@anystring.anystring。(anystring是一个字母)。
我错过了什么吗?
window.onload = function () {
document.getElementById("form").onsubmit = validate;
}
function validate() {
var email = document.getElementsByTagName("input")[6].value;
var regex = /^\w@\w+\.\w$/;
if (!regex.test(email)) {
alert("enter a valid email");
return false;
} else return true;
}
答案 0 :(得分:2)
除非您确定输入的电子邮件地址与该格式相匹配,否则您应该考虑使用匹配更多的正则表达式。
“()<> []:; @ \\”!?#$%&安培;'* + - / = ^ _`{} | 〜.a“@üñîçøðé.com在技术上(!)是一个正确的电子邮件地址。虽然匹配所有这些疯狂可能不是一个好主意,但这可能是你正在寻找的,并将匹配绝大多数的电子邮件地址今天:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
同样,如果您确定您的电子邮件地址将采用您最初的格式,请使用Valinho的答案。
有关将电子邮件地址与正则表达式匹配的有趣读物(包含上述正则表达式):http://www.regular-expressions.info/email.html
官方标准(没有unicode疯狂):https://tools.ietf.org/html/rfc5322
答案 1 :(得分:-3)
使用当前设置的正则表达式,您只能在开头加上一个字符,在结尾处加上一个字符。正则表达式的有效电子邮件是例如a@test.a
但你不想这样做,所以改为: undoVec = copyVector(v);
…
v = copyVector(undoVec);
你错过了加号字符,这意味着你可以输入至少一个或多个字符。顶级域通常由两个或三个字符组成,因此您可以限制它。
现在应该可以了。