JS学习笔记5 正则表达式

来源:互联网 发布:弱光子 知乎 编辑:程序博客网 时间:2024/05/01 15:07


第7章  正则表达式

--JAVASCRIPT 内置支持正则表达式已经很久了,甚至要久于一些高级语言,如JAVA.

定义:
 var reCat = new RegExp("cat","gi");
 var reCat = /Cat/gi;

简单模式:
 元字符: +*/   ([]{}) /^$
 转义: var reQMark = //?/;
       var reQMark = new RegExp("//?");

 

字符类:用于测试字符的组合
 1 简单类: /[bcf]at/gi;
 2 负向类: [^bc]at;
 3 范围类: [a-z];
 4 组合类: [A-M1-4/n]
 5 预定义类:
     .
     /d ,/D
     /s ,/S
     /w ,/W

 量词:指定特定模式出现的次数
  1 简单量词: ?  *  + {n}  {n,m}  {n,}
  2 贪婪的/惰性的/支配性的量词:  */*?/*+

 分组:通过一系统括号包围一系列字符,字符类以及量词来使用的
   var reDog = /(Dog){2}/g;
   var re = /(mom( and dad)?)/;

 


 反向引用:存储在分组里面的特殊值

 var s = "#123456";
var re = /#(/d+)/;
alert(re.test(s));
alert(RegExp.$1);

 


 候选:

var s1 = "red";
var s2 = "blue";
var re = /(red|blue)/;
alert(re.test(s1));
alert(re.test(s2));
 
 非捕获性分组:创建反向引用 的分组,称之为捕获性分组.还有一种非捕获性分组,不会创

建反向引用.

 前瞻(lookahead):告诉正则表达式向前看而不移动其位置.
   
      var s3 = "bedroom";
var s4 = "bedding";
var re = /(bed(?=room))/;
alert(re.text(s3));
alert(re.text(s4));
alert(RegExp.$1);

      var s3 = "bedroom";
var s4 = "bedding";
var re = /(bed(?!room))/;
alert(re.text(s3));
alert(re.text(s4));
alert(RegExp.$1);

  边界:^ $ /b /B

  var s = "Important word is the last one.";
var re = /(/w+)/.$/;
alert(re.test(s));
alert(RegExp.$1);

var s1 = "first second third fourth fifth sixth"
var re1 = /(/w+)/g;
var aWords = s1.match(re1);
for(i=0;i<aWords.length;i++){
document.write(aWords[i]);
}

  多行模式:var re1 = /(/w+)$/gm;

var s1 = "first second/nthird fourth/nfifth sixth"
var re1 = /(/w+)$/gm;
var aWords = s1.match(re1);
for(i=0;i<aWords.length;i++){
document.write(aWords[i]);
}
  

原创粉丝点击