经常用到的正则表达式方法有两个test()exec()

一. test()方法

正则表达式对象.test(字符串)`

  • 参数:要匹配的字符串

  • 返回值:匹配成功返回true,失败返回false

在只想知道目标字符串与某个模式是否匹配,但不需要知道其文本内容的情况下,使用这个方法非常方便。因此, test() 方法经常被用在 if 语句中。

<script type="text/javascript">
    var pa = /girl/gi;
    if(pa.test("厉害了我的girl")){
        alert("这个女孩和你很配");
    }else {
        alert("你注定没有女孩去匹配");
    }
</script>

二. exec()方法

exec(字符串):该方法为专门为捕获组而设计的

  • 参数:要匹配的字符串

  • 返回值:返回的是一个数组。如果不匹配则返回null

关于返回值数组的说明:

  1. 它确实是Array的实例。

  2. 但是这个数组有两个额外的属性:index和 input

    • index:表示匹配的字符串在源字符串中的索引

    • input:表示匹配的源字符串。

  3. 数组的第一项是与整个模式匹配的字符串,其他项是与模式中捕获组匹配的字符串

  4. 如果没有捕获组,则数组中只有第一项。关于捕获组的概念以后再说

<script type="text/javascript">
    var pa = /girl/gi;
    var testStr = "myGirl, yourgirl, hisgIrl";
    var girls = pa.exec(testStr);  //捕获
    alert(girls.length + ":" + (girls instanceof Array));    //正则表达式没有捕获组,所以数组长度为1
    alert(girls[0]);    //第一次捕获的是 Girl
      //因为我们是用的全局匹配,所以此次匹配的时候从上次匹后的位置开始继续匹配
    alert(pa.exec(testStr)[0]);        // girl
    alert(pa.exec(testStr)[0]);    // gIrl
    alert(pa.exec(testStr)[0]); //继续向后没有匹配的字符串,所以返回null
      // 返回null,如果继续再匹配,则会回到字符串的开始,重写开始匹配。
    alert(pa.exec(testStr)[0]);    // Girl
      // ...开启新一轮匹配
</script>

所以我们如果想找到全部匹配的字符串,这个时候可以用循环,结束条件就是匹配结果为null

<script type="text/javascript">
    var pa = /girl/gi;
    var testStr = "myGirl, yourgirl, hisgIrl";
    var girls;
    while(girls = pa.exec(testStr)){    //如果等于null,会自动转成 false,结束。
        alert(girls);
    }
</script>

分组。在正则表达式中用()括起来的是捕获组。组可以嵌套。

<script type="text/javascript">
      //()内的内容就是第1组(Girl),其实我们完整整个正则表达式可以看出第0组 girl(Girl)
      // 将来对应着匹配结果数组的下标。  
    var pa = /girl(Girl)/gi;    
    var test = "girlGirl abdfjla Girlgirl fal girl";
    var girls;
    while(girls = pa.exec(test)){
      //匹配之后,数组的第0个元素对应的这第0组的匹配结果,第1个元素对应着第1组的匹配结果
        for (var i = 0; i < girls.length; i++) {
            console.log(girls[i]);
        }
        console.log("-------------");
    }
</script>
//最终运行结果:
girlGirl
Girl
-------------
Girlgirl
girl
------------
Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-10-18 03:19:29

results matching ""

    No results matching ""