Php 客户端/服务器端JavaScript中的电子邮件验证

Php 客户端/服务器端JavaScript中的电子邮件验证,php,javascript,email-validation,Php,Javascript,Email Validation,我知道这个问题将会结束,因为我研究了很多这样的例子,但请看我认为我在做一些不同的事情 我用以下代码编写了服务器端PHP电子邮件验证: if (!filter_var($user_new_email, FILTER_VALIDATE_EMAIL)) { $errors .="Email,"; $pass = false; } 我的客户端电子邮件验证是: function validateEmail(txtEmail){ var

我知道这个问题将会结束,因为我研究了很多这样的例子,但请看我认为我在做一些不同的事情

我用以下代码编写了服务器端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中更新我的正则表达式?

使用jquery验证插件它非常易于使用和自定义 例如,Jquery验证插件和定位绝对Jquery验证插件只需转义正则表达式中的最后一个“.”(点)。当未转义或在括号内时,点匹配除新行以外的任何字符。因此,
过滤器
的正确值为:

var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+\.[a-z]{1,4}$/;

@Diego找到了您想要的答案,但有几个原因说明,如果您在javascript中完全验证,这并不重要:

  • 始终可以绕过客户端验证。您必须在服务器端完成完整的验证,因此客户端验证主要是对常规用户的一种礼貌。最多,它可以提供有关表单错误的快速反馈,并为您节省一些请求
  • 验证电子邮件地址很难。根据RFCS2822和5322,大多数验证器(包括JavaScript示例)都过于严格。阅读本文,了解有效地址有多奇怪

  • 实际上,这与javascript问题中的所有其他验证电子邮件相同。该正则表达式将拒绝我接收电子邮件的完全有效的电子邮件地址。旁注:最后,您可以放置
    返回filter.test(a)