论坛首页 Web前端技术论坛

验证Email格式的好例子

浏览 10504 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-11-26  

遇到过很多应用要验证Email的格式,看过TOMCAT和JAVA的验证源代码,发现有些复杂,不过都是基于RFC2822作为验证指南的,其实验证主要考的是正则表达式的能力,还有就是你对Email的了解,最近看了《AJAX HACK》里面有个Email验证的例子,觉得很不错,所以贴出来与大家一起分享。

xml 代码
  1. /* Define an Email constructor*/   
  2. function Email(e){   
  3.     this.emailAddr=e;   
  4.     this.message="";   
  5.     this.valid=false;   
  6. }   
  7.   
  8. function validate(){   
  9.     //do a basic check for null, zero-length string, ".", "@",   
  10.     //and the absence of spaces   
  11.     if (this.emailAddr == null || this.emailAddr.length == 0 ||   
  12.         this.emailAddr.indexOf(".") == -1 ||   
  13.         this.emailAddr.indexOf("@") == -1 ||   
  14.         this.emailAddr.indexOf(" ") != -1){   
  15.         this.message="Make sure the email address does not contain any spaces "+   
  16.                      "and is otherwise valid (e.g., contains the \"commercial at\" @ sign).";   
  17.         this.valid=false;   
  18.         return;   
  19.     }   
  20.   
  21.     /*Get the user; they cannot begin or end with a "."   
  22. Regular expression specifies: the group of characters before the @ symbol, which   
  23. are made up of word characters, followed by zero or one period char,   
  24. followed by at least 2 word characters. */   
  25.     regex=/(^\w{2,}\.?\w{2,})@/;   
  26.     _match = regex.exec(this.emailAddr);   
  27.   
  28.     if ( _match){   
  29.         user=RegExp.$1;   
  30.         //alert("user: "+user);   
  31.     } else {   
  32.         this.message="Make sure the user name is more than two characters"+   
  33.                      ", does not begin or end with a period (.), or is not otherwise "+   
  34.                      "invalid!";   
  35.         this.valid=false;   
  36.         return;   
  37.     }   
  38.     //get the domain after the @ char   
  39.     //first take care of domain literals like @[19.25.0.1] however rare   
  40.     regex=/@(\[\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}\])$/;   
  41.     _match = regex.exec(this.emailAddr);   
  42.   
  43.     if( _match){   
  44.         domain=RegExp.$1;   
  45.          //alert("domain: "+domain);   
  46.         this.valid=true;   
  47.     } else {   
  48.         /*the @ character followed by at least 2 chars that are not a period (.),   
  49. followed by a period, followed by zero or one instances of at least two   
  50. characters ending with a period, followed by two-three chars that are not periods */   
  51.         regex=/@(\w{2,}\.(\w{2,}\.)?[a-zA-Z]{2,3})$/;   
  52.         _match = regex.exec(this.emailAddr);   
  53.         if( _match){   
  54.             domain=RegExp.$1;   
  55.         } else {   
  56.             this.message="The domain portion of the email had less than 2 chars "+   
  57.                          "or was otherwise invalid!";   
  58.             this.valid=false;   
  59.             return;   
  60.         }   
  61.     }//end domain check   
  62.     this.valid=true;   
  63.   
  64. }   
  65.   
  66. //Make validate() an instance method of the Email object   
  67. Email.prototype.validate=validate;   
   发表时间:2007-12-03  
嗯 先收藏 顺便发一个用于验证email的正则表达式:
/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(txt)
0 请登录后投票
   发表时间:2008-01-02  
正则表达式 很 简单的
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics