正则表达式再思考(待续)

   最近在使用正则表达式的g标志时出现了错误,索性就把正则表达式在总结下,算是加强理解吧!

   1、创建正则表达式

        1.1使用正则表达式字面量(即//)来创建

        var  reg = /(.)at/g;

        1.2使用构造函数(RegExp)

        var  reg = new RegExp('(.)at','g');

        1.3上述二种方法的不同

          1.3.1、表达式中存在元字符(例如[、|等)

           前者: var  reg = /\.at/g    //匹配 .at;后者:var  reg = new RegExp('\\.at','g'); 

    2.标志g的用法

     正则表达式带上g表示应用于所以符合条件的字符串,而不是在发现第一个匹配项后就停止匹配。所以此情况下lastIndex属性会随着表达式的使用发生变化。例如:

     

       案例二:

         

 3.常用的正则表达式  参考 12

  邮箱:  ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

  URL:[http|https|ftp]:////[^\s]+复杂点的:/ [http|https|ftp]:////([\w-]+\.)([\w-]+)(\?[\w=&]*)?

  IP地址:((25[0-4]|2[0-4]\d|[01]?\d\d?)\.) {3}(25[0-4]|2[0-4]\d|[01]?\d\d?)

  QQ:[1-9]\d{4,}

  HTML: <(^[a-z][a-z 0-9"])>\w*<\/\1>|<^[a-z][a-z 0-9"] \/>

  年-月-日: (^[1-9]\d{3})-(1[0-2]|0?[1-9])-(3[0-1]|[12][0-9]|0?[1-9])

  汉字: [\u4e00-\u9fa5]

  大陆手机号: 1\d{10}

  大陆身份证号: ^[1-9]\d{14}$|^[1-9]\d{16}[1-9xX]$

  非负整数: \d+

  正整数:^[1-9]\d*

  负整数: ^-[1-9]\d*

  整数:^-?\d*

  小数: (-?\d*)(\.\d+)?

 4.使用正则表达式不错的案例 

View Code
 1 请编写一个JavaScript 函数toRGB,它的作用是转换CSS中常用的颜色编码。 要求:
 2 
 3 alert(toRGB("#0000FF"));          // 输出 rgb(0, 0, 255)
 4 alert(toRGB("invalid"));          // 输出 invalid
 5 alert(toRGB("#G00"));              // 输出 #G00
 6 
 7 function  toRGB(val){
 8       var reg1 = /^#([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
 9       var reg2 = /^#([0-9A-F])([0-9A-F])([0-9A-F])$/i;
10       var reg3 = /[0-9A-F]{2}/g;
11       if(reg2.test(val)){
12         val = val.replace(reg2,"$1$1$2$2$3$3");
13       }
14       
15       if(reg1.test(val)){
16         var match = val.match(reg3);
17         val =  'rgb('+[parseInt(match[0],16),parseInt(match[1],16),parseInt(match[2],16)].join(',')+')';
18       } 
19       
20       return val;
21 }

 

    

          

posted @ 2013-05-03 10:07  沙漠孤鹰1140  阅读(294)  评论(1编辑  收藏  举报