如何验证JavaScript中的电子邮件地址?
在JavaScript中是否有一个正则表达式来验证电子邮件地址?
以下答案仅供参考
使用正则表达式可能是最好的方法。你可以在这里看到一堆测试(取自chromium)
function validateEmail(email) {
const re = /^(([^<>()[\]\\.,;:\s@"] (\.[^<>()[\]\\.,;:\s@"] )*)|(". "))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9] \.) [a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
下面是接受unicode的正则表达式的例子:
const re = /^(([^<>()[\]\.,;:\s@\"] (\.[^<>()[\]\.,;:\s@\"] )*)|(\". \"))@(([^<>()[\]\.,;:\s@\"] \.) [^<>()[\]\.,;:\s@\"]{2,})$/i;
但请记住,不应该只依赖JavaScript验证。JavaScript很容易被禁用。这也应该在服务器端进行验证。
下面是上面的一个例子:
function validateEmail(email) {
const re = /^(([^<>()[\]\\.,;:\s@\"] (\.[^<>()[\]\\.,;:\s@\"] )*)|(\". \"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9] \.) [a-zA-Z]{2,}))$/;
return re.test(email);
}
function validate() {
const $result = $("#result");
const email = $("#email").val();
$result.text("");
if (validateEmail(email)) {
$result.text(email " is valid :)");
$result.css("color", "green");
} else {
$result.text(email " is not valid :(");
$result.css("color", "red");
}
return false;
}
$("#validate").on("click", validate);<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<p>Enter an email address:</p>
<input id='email'>
<button type='submit' id='validate'>Validate!</button>
</form>
<h2 id='result'></h2>