【问题标题】:Email Validation in client/server side JavaScript [duplicate]客户端/服务器端 JavaScript 中的电子邮件验证 [重复]
【发布时间】:2012-04-07 02:48:40
【问题描述】:

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

我使用以下代码编写了我的服务器端 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;
   }

所以在我的客户端,如果我只输入用户名@域(没有 .com),它是有效的。我不想那样。

我在客户端和服务器端都需要相同的验证。 如何在 JavaScript 中更新我的正则表达式?

【问题讨论】:

  • 其实这和其他所有validate email in javascript问题都是一样的。
  • 该正则表达式将拒绝我收到电子邮件的完全有效的电子邮件地址。
  • 旁注:最后你可以把return filter.test(a);

标签: php javascript email-validation


【解决方案1】:

只需转义最后一个 '.' (点)在你的正则表达式中。当没有转义或在括号内时,点匹配除换行符以外的任何字符。所以filter 的正确值是:

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

【讨论】:

    【解决方案2】:

    @Diego 有您正在寻找的答案,但有几个原因可以说明您是否在 javascript 中完全验证并不重要:

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

    【讨论】:

      【解决方案3】:

      使用 jquery 验证插件,它非常易于使用且可自定义 eg.Jquery Validation Plugin 和 Position Absolute Jquery validation plugin

      【讨论】:

        猜你喜欢
        • 2011-01-21
        • 1970-01-01
        • 2020-01-16
        • 2012-10-05
        • 2010-09-14
        • 2020-09-08
        • 1970-01-01
        相关资源
        最近更新 更多