正则表达式(二)

     一、字符类

      概念: 将单独的直接量字符放进方括号内就可以组合成字符类(character class)。

      注:红色表示不是特别清楚的

      [...]  ——表示字符类中任意一个字符都满足

     

      [^...]——除字符类中的任意一个字符都满足

      .——除换行符(\n)和Unicode终止符之外的任意字符(不知道有什么用?)

      \w——(word)任何ASCII单字字符,==[a-zA-Z0-9]

      \W——任何非ASCII单字字符,==[^a-zA-Z0-9]

      \s ——(space)任何Unicode空白字符

      \S——任何非Unicode空白字符

      \d——任何ASCII数字,等价于[0-9]

      \D——除了ASCII数字,==[^0-9]

      [\b]——退格直接量(不知道有什么用?)

 

      二、重复

      重复还有:{n,m},{n,},{n},?,+,*不一一解释

      注:重复是匹配前一模式的一个或多个副本

     

     三、非贪婪的重复(看是明白一点,做了实验后不明白了!)  

var s = "aaaaabab";
var tanlan 
= /a*b/
;
var landu 
= /a*?b/
;
var t 
=
 s.match(tanlan);   //本以为t:aaaaabab,l:aaaaab
var l 
= s.match(landu);   //这两个匹配出来的数组居然是一样的

 

     四、选择、分组和引用

     |:选择

     匹配符号从左到右的表达式(匹配一个后不会再往后走了)

var regChoose = /\d{2}|\w{4}/;   //要么两位小数,要么四个小写字母,匹配第一个就不匹配第二个

 

    ():组合

      作用一:将单独的项目组合成子表达式     

 var regCombination = /(菜鸟吃虫)+虫吃菜/  //“菜鸟吃虫”一定要出现一次或更多次

 

    作用二:取出字串,以后匹配

     匹配左右的冒号相同    

  var regMarks = new RegExp("([\'\"])[^\' \"]*\\1");  //匹配左右冒号一致,但有个问题:"中文的引号如何  表示,用ASCII码吗"

   

    (?:...):组合,将项目组合到一个单元,但不记忆与该组匹配的字符

      不进行详解

 

     \n:与第n个分组第一次匹配的字符进行匹配

     不进行详解

  

     五、指定匹配的位置

      待续...

 

posted @ 2010-05-13 22:02  菜鸟吃虫,虫吃菜  阅读(263)  评论(1编辑  收藏  举报