rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » Javascript

javascript正则表达式,验证很不错的哦

「正硎痉ā够颉刚健梗Regular   expressions)是在   UNIX   世界中l展出淼淖执记桑浠靖拍钍怯靡惶缀危ǖδ大)的符肀ψ执K可Ψ媳l件的字串M行修改或其他\算。事上,UNIX   的S多w或指令都支援正硎痉ǎ   grep、sed、awk、ed、vi、emacs   等。(@些|西大概只有像我@拥   LKK   才谩#┯绕涫   Perl,更是⒄硎痉òl]的淋漓M致。    
   
  Netscape   及   IE   在第四版後都支援   JavaScript   的正硎痉ǎem用於表钨Y料的Cc修改。事上,JavaScript   的正硎痉ê   Perl   乎一模一樱虼耍诒菊W到的正硎痉ǎ部梢酝耆m用於   Perl。(一~沙裕直太棒了!)    
   
  JavaScript   的正剑Regular   expressions)是一冉ǖ奈锛浣函示(Construction   functoin)   RegExp,典型用法如下:    
   
  re   =   new   RegExp("pattern",   "flag")  
   
  上述用法也可以成:    
  re   =   /pattern/flag  
   
  其中,pattern   代表以正硎痉盹@示的字串,flag   t是比Φ姆绞健flag   的值可能有三N,分e解如下:    
  g:全域比ΓGlobal   match)    
  i:忽略大小(Ignore   case)    
  gi:全域比K忽略大小    
  e例碚f,我的身份C字的格式是由一英文字母加上九底纸M合而成,如果我要求使用者入身份C字,就可以使用   JavaScript   的正硎痉眚C其格式的正_性。例如,我可用下列表硪笫褂谜咻入身份C字:    
   
  身份C字:(第一英文字母需大)    
  在上例中,我利用   onBlur   事件磉M行正降谋ΓQ句f,使用者填完Y料,要x_此谖坏r候,JavaScript   即y知   onBlur   事件,K呼叫函   checkID()   μ钊氲馁Y料M行C。(欲y其效果,只需h除谖鹊娜我字元,再到谖煌恻c一下,就可以看到警告窗了。)相P原始a如下:    
   
  <SCRIPT>  
  function   checkID(formElement)   {  
  re   =   /^[A-Z]\d{9}$/;  
  if   (!re.test(formElement.value))  
  alert("你的身份Ca格式不Γ");  
  }  
  </SCRIPT>  
   
  <FORM>身份C字:<INPUT   onblur=checkID(this)   value=A000000000>(第一英文字母需大)   </FORM>  
  在上述原始a中,/^[A-Z]\d{9}$/   就是一正剑[A-Z]   代表由   A   至   Z   的所有可能英文字母,\d   代表由   0   至   9   的的孔郑ㄊ上也可以成   [0-9]),{9}   t代表需要有九的孔郑^   代表字串_始位置,$   代表字串Y束位置,因此   /^[A-Z]\d{9}$/   就代表可以比ι矸葑C字的正健formElement.value   代表使用者入的字串,re.test()   t骰   true   或   false,代表比κ欠癯晒ΑH粢幌薅ㄊ谴英文字母,只需⒄礁某   /^[a-zA-Z]\d{9}$/g   就可以了!(注意:若不加入   ^   和   $,那N   /[A-Z]\d{9}/   就Φ狡渌缓戏ǖ纳矸葑C字,例如   AGF123456789   或是   F1234567890   等。因此,加入   ^   和   $   可保C比φ_的字串一定是由由一大英文字母加上九底炙成。)    
   
  事上,身份C字本身就有仍诘木at,@些t和使用者的性e有P,因此若要F^完整的表悟C,就必幂^完整的身份Cat。    
   
  另一蔚睦樱且笫褂谜咻入信用卡a,@是一M16底值奶a,例如:    
   
  信用卡a:(格式:xxxx-xxxx-xxxx-xxxx)    
    onBlur   l生r,Q句f,JavaScript   艚泻   checkCreditCard(   )   μ钊氲馁Y料M行C。相P原始a如下:    
   
  <SCRIPT>  
  function   checkCreditCard(control)   {  
  re   =   /^\d{4}-\d{4}-\d{4}-\d{4}$/;  
  if   (!re.test(control.value))  
  alert("你的信用卡a不符合「xxxx-xxxx-xxxx-xxxx」的格式!");  
  }  
  </SCRIPT>  
   
  <FORM>信用卡a:<INPUT   onblur=checkCreditCard(this)   value=xxxx-xxxx-xxxx-xxxx>(格式:xxxx-xxxx-xxxx-xxxx)   </FORM>  
  在上例中,很@然地,/^\d{4}-\d{4}-\d{4}-\d{4}$/   就代表正_的信用卡格式。    
   
  下一例子,t是用正硎痉眚C使用者的英文名字,例如:    
   
  你的英文全名:(格式:First   Last   或   First   Middle   Last)    
    onBlur   l生r,Q句f,JavaScript   艚泻   checkEnglishName(   )   μ钊氲馁Y料M行C。相P原始a如下:    
   
  <SCRIPT>  
  function   checkEnglishName(control)   {  
  re1   =   /^[A-Za-z\-]+\s+[A-Za-z\-]+$/;  
  re2   =   /^[A-Za-z\-]+\s+[A-Za-z\-]+\s+[A-Za-z\-]+$/;  
  if   (!re1.test(control.value)   &&   !re2.test(control.value))  
  alert("你的英文名字格式不Γ");  
  }  
  </SCRIPT>  
   
  <FORM>你的英文全名:<INPUT   onblur=checkEnglishName(this)>(格式:First   Last   或   First   Middle   Last)   </FORM>  
   
  正轿锛姆椒闪斜砣缦拢    
   
  正轿锛姆椒     功能      
  re.compile(pattern,   flag)     φ轿锛   re   M行g,以增加比λ俣      
  re.exec(string)   或   re(string)     比φ剑K骰仃列      
  re.test(string)     比φ剑K骰乇Y果(成功或失。      
   
   
  在上述例中,我只用到了正轿锛   test()   方法砼啾κ欠癯晒Γ渌椒卺嵝蛘鹿提到。    
   
  在M行表钨Y料C之前,我冗M行表钨Y料修改,例如拿掉不必要的空格、英文字母大小DQ等,@些工作也可以由字串的   replace()   方法或正降   exec()   方法磉_成,@是我下一的主}。    
   
  在下列的表格中,我使用蔚墓例φ降米鲚^完整的f明:    
   
  正     f明及例     比Σ怀闪⒅执      
  /a/     含字母   "a"   的字串,例如:"ab",   "bac",   "cba"     "xyz"      
  /a./     含字母   "a"   以及其後任一字元的字串,例如:"ab",   "bac"     "a",   "ba"      
  /^xy/     以   "xy"   _始的字串,例如:"xyz",   "xyab"     "axy",   "bxy"      
  /xy$/     以   "xy"   Y尾的字串,例如:"axy",   "abxy"     "xya",   "xyb"      
  [13579]     包含   "1"   或   "3"   或   "5"   或   "7"   或   "9"   的字串,例如:"a3b",   "1xy"     "y2k"      
  [0-9]     含底种执     不含底种执      
  [a-z0-9]     含底只蛐字母之字串     不含底旨靶字母之字串      
  [a-zA-Z0-9]     含底只蜃帜钢执     不含底旨白帜钢执      
  b[aeiou]t     "bat",   "bet",   "bit",   "bot",   "but"     "bxt",   "bzt"      
  [^0-9]     不含底种执     含底种执      
  [^aeiouAEIOU]     不含母音之字串     含母音之字串      
  [^\^]     不含   "^"   之字串,例如:"xyz",   "abc"     "xy^",   "a^bc"      
   
   
  注意在上表中,"^"   在l斜中,代表一字串的_始位置,因此   /^xy/   代表以   "xy"   _始的字串。同理,"$"   在l斜中,代表一字串的Y束位置,因此   /xy$/   代表以   "xy"   Y束的字串。但是如果   "^"   放在方括弧中,就代表「否定」,因此   [^aeiouAEIOU]   代表不含母音之字串。    
   
  有些正1挥玫剑虼艘驯欢x樘囟ㄗ衷@些字元可列表f明如下:    
   
  正硎痉ǖ奶囟ㄗ衷     f明     等效的正硎痉      
  \d     底     [0-9]      
  \D     非底     [^0-9]      
  \w     底帧⒆帜浮⒌拙     [a-zA-Z0-9_]      
  \W     非   \w     [^a-zA-Z0-9_]      
  \s     空白字元     [\r\t\n\f]      
  \S     非空白字元     [^\r\t\n\f]      
   
   
  此外,我可定x字元的重}次担缦拢    
   
  正硎痉     f明      
  /a?/     零或一   a      
  /a+/     一或多   a      
  /a*/     零或多   a      
  /a{4}/     四   a      
  /a{5,10}/     五至十   a      
  /a{5,}/     至少五   a      
  /a{,3}     至多三   a      
  /a.{5}b/     a   和   b中gA五(非Q行)字元      
   
   
  各位F在已可以慢慢w秸硎臼降耐α耍±猛拥姆椒ǎ可以Ω魇礁拥谋屋入M行C,⒖枷率龉例。    
   
    注意事  
  以   RegExp(pattern,   flag)   的方式斫⒄轿锛r,若   pattern   包含以反斜_^的特殊字元(例如   \d、\w、\s   等)r,我必再加上一反斜肀A羝涮厥庖饬x。例如:    
  re   =   /\d+\s\w+/g  
   
  以   RegExp   橹鞯牡刃П硎痉椋    
  re   =   new   RegExp("\\d+\\s\\w+",   "g");   
   

顶一下
(0)
踩一下
(0)