Email validation with regex
本问题已经有最佳答案,请猛点这里访问。
我想用regex验证电子邮件。下面的代码显示了我使用的正则表达式。但是表单不接受简单的[email protected]。(任何字符串都是字母)。
我错过什么了吗?
1 2 3 4 5 6 7 8 9 10 11 12 | 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; } |
除非您确定输入的电子邮件地址将与该格式匹配,否则应考虑使用更匹配的正则表达式。
"())>,[,];@!γ%$&AM'*+/=?^ ' {} ~?A"@"?????e_.com在技术上是!!)一个正确的电子邮件地址。虽然匹配所有这些疯狂可能不是一个好主意,但这可能是您正在寻找的,并且将匹配今天绝大多数电子邮件地址:
1 | [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的答案。
有关将电子邮件地址与正则表达式(包含上述regex)匹配的有趣文章:http://www.regular-expressions.info/email.html
官方标准(无Unicode疯狂):https://tools.ietf.org/html/rfc5322
使用当前设置的正则表达式,您只需要在开头和结尾分别添加一个字符。您的regex的有效电子邮件是@test.a。
但你不想这样,把它改成:
您错过了加号字符,这意味着您可以输入至少一个或多个字符。顶级域通常由两个或三个字符组成,因此您可以限制它。
现在应该可以了。