JavaScript高级程序设计学习笔记6:正则表达式

来源:互联网 发布:中兴软件南昌公司如何 编辑:程序博客网 时间:2024/04/17 05:26

一、正则表达式通过RegExp类实现,RegExp对象的构造函数可以带一个或两个参数。第一个参数(或只有一个参数)是描述需要进行匹配的模式字符串,如果还有第二个参数,这个参数则指定了额外的处理指令。

定义正则表达式:
1、只匹配字符串中出现的第一个单词"cat";区分大小写
var reCat = new RegExp("cat"); 
2、匹配字符串中出现的全部"cat",而不是在找到第一个匹配后就停止;忽略大小写
var reCat = new RegExp("cat","gi");

也可以使用Perl风格的语法:
var reCat = /cat/gi;


二、创建一个RegExp对象后,把它应用到字符串上。RegExp和String的一些方法都可使用。

1、RegExp有个test()方法,如果给定字符串匹配这个模式,它就返回ture,否则返回false。

    var sToMatch = "a fat cat";
    var reCat = /at/;   
    alert(reCat.test(sToMatch));   //true


2、String对象的match()方法返回一个包含在字符串中的所有匹配的数组

    var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /at/gi;
    alert(sToMatch.match(reAt));  //at,at,At,aT,at,
   
3、String对象的search()方法返回在字符串出现的第一个匹配的位置,全局匹配正则表达式(带参数g)在使用search()时不起作用

    var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /at/gi;
    alert(sToMatch.search(reAt));  //3

4、扩展的字符串方法,replace()可以用用另一个字符串(第二个参数)来替换某个子串(第一个参数)的所有匹配。可以给第一个参数传递一个正则表达式

    var sToChange = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /at/gi;
    alert(sToChange.replace(reAt, "dog")); //a bdog, a Cdog, a fdog bdog, a fdog cdog


三、字符类是用于测试的字符的组合。通过将一些字符放入方括号[]中,可以去匹配第一个字符、第二个字符等等。
1、简单类,匹配方括号中的字符

      var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /[ab]at/gi;
    alert(sToMatch.match(reAt));

2、负向类,匹配方括号中除了^后面的字符

    var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /[^ab]at/gi;
    alert(sToMatch.match(reAt));  //Cat,fAt,faT,cat
3、范围类,匹配方括号中用横线“-”连起来的从什么到什么

    var sToMatch = "a bat, a Cat, a fAt baT, a faT cat";
    var reAt = /[a-c]at/gi;
    alert(sToMatch.match(reAt));  //bat,Cat,baT,cat
4、组合类,由几种其它的类组合而成的字符类

    var sToMatch = "a bat, a Cat, a fAt baT, a faT cat,123at";
    var reAt = /[a-c1-3]at/gi;
    alert(sToMatch.match(reAt));  //bat,Cat,baT,cat,3at
5、预定义页,由于某些模式会反复用到,所以用一组预定义类可以更方便地指定复杂类

    代码        等同于        匹配
    .        [^/n/r]        除了换行和回车之外的任意字符
    /d        [0-9]        数字
    /D        [^0-9]        非数字字符
    /s        [/t/n/x0B/f/r]  空白字符
    /S        [^/t/n/x0B/f/r]    非空白字符
    /w        [a-zA-Z_0-9]     单词字符(所有的字母、所有的数字和下划线)
    /W        [a-zA-Z_0-9]     非单词字符                       

           

四、量词,可以指定某个特定模式出现的次数。

    代码        描述
    ?        出现零次或一次
    *        出现零次或多次(任意次)
    +        出现一次或多次(至少出现一次)
    {n}        一定出现n次
    {n,m}        至少出现n次但不超过m次
    {n,}        至少出现n次
       
五、分组,通过用一系列括号包围一系列字符、字符类以及量词来使用。

    var sToMatch = "123123abcabcabc";
    var re = /(123){2}(abc)?/gi;
    alert(sToMatch.match(re));   //123123abc

 

 

 

 

例子:

var str = "123<div>456</div>789";
str = str.replace(/<div[/s/S]*?<//div>/, ""); //去掉div及其中内容,结果123789