我知道这个问题将被关闭,因为我研究了很多这方面的例子,但请看我认为我做的事情不同。
我使用以下代码编写了我的服务器端PHP电子邮件验证:
if (!filter_var($user_new_email, FILTER_VALIDATE_EMAIL)) {
$errors .="Email,";
$pass = false;
}
我的客户端电子邮件验证是:
function validateEmail(txtEmail){
var a = document.getElementById(txtEmail).value;
var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{1,4}$/;
if(filter.test(a)){
return true;
}
else{
return false;
}
所以在我的客户端,如果我只输入username @ domain(没有.com),那么它是有效的。我不希望这样。
我需要在客户端和服务器端都使用相同的验证。 如何在JavaScript中更新我的正则表达式?
答案 0 :(得分:3)
逃脱最后的'。'你的正则表达式中的(点)。如果没有转义或在括号内,则一个点匹配除新行之外的任何字符。因此filter
的正确值为:
var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+\.[a-z]{1,4}$/;
答案 1 :(得分:2)
@Diego有你正在寻找的答案,但有几个原因,如果你在你的javascript中完全验证它真的没关系:
答案 2 :(得分:0)
使用jquery验证插件,它非常易于使用和自定义 eg.Jquery Validation Plugin和Position Absolute Jquery验证插件