zoukankan      html  css  js  c++  java
  • js正则表达式中test,exec,match方法的区别说明

    js正则表达式中test,exec,match方法的区别说明

    test 
    test 返回 Boolean,查找对应的字符串中是否存在模式。
    var str = "1a1b1c";
    var reg = new RegExp("1.", "");
    alert(reg.test(str)); // true


    exec 
    exec 查找并返回当前的匹配结果,并以数组的形式返回。
    var str = "1a1b1c";
    var reg = new RegExp("1.", "");
    var arr = reg.exec(str);
    如果不存在模式,则 arr 为 null,否则 arr 总是一个长度为 1 的数组,其值就是当前匹配项。arr 还有三个属性:index 当前匹配项的位置;lastIndex 当前匹配项结束的位置(index + 当前匹配项的长度);input 如上示例中 input 就是 str。


    exec 方法受参数 g 的影响。若指定了 g,则下次调用 exec 时,会从上个匹配的 lastIndex 开始查找。
    var str = "1a1b1c";
    var reg = new RegExp("1.", "");
    alert(reg.exec(str)[0]);
    alert(reg.exec(str)[0]);
    上述两个输出都是 1a。现在再看看指定参数 g:
    var str = "1a1b1c";
    var reg = new RegExp("1.", "g");
    alert(reg.exec(str)[0]);
    alert(reg.exec(str)[0]);
    上述第一个输出 1a,第二个输出 1b。


    match 
    match 是 String 对象的一个方法。
    var str = "1a1b1c";
    var reg = new RegExp("1.", "");
    alert(str.match(reg));
    match 这个方法有点像 exec,但:exec 是 RegExp 对象的方法;math 是 String 对象的方法。二者还有一个不同点,就是对参数 g 的解释。
    如果指定了参数 g,那么 match 一次返回所有的结果。
    var str = "1a1b1c";
    var reg = new RegExp("1.", "g");
    alert(str.match(reg));
    //alert(str.match(reg)); // 此句同上句的结果是一样的
    此结果为一个数组,有三个元素,分别是:1a、1b、1c。

    JavaScript中经常用到正则表达式, 而正则表达式中经常用到Match和Test这两个函数,当然还有Exec. 这里以代码实例来区分它们之间的不同吧.

    Match Example 

    复制代码代码如下:

    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    var regexp = /[A-E]/gi;
    var rs = str.match(regexp);
    //rs= Array('A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e');


    Test Example 

    复制代码代码如下:

    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    var regexp = /[A-E]/gi;
    var rs = regexp.test(str);
    // rs = true; boolean


    Exc Example 

    复制代码代码如下:

    var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    var regexp = /[A-E]/gi;
    var rs;
    while ((rs = regexp.exec(str)) != null)
    {
        document.write(rs);
        document.write(regexp.lastIndex);
        document.write("<br />");
    }

    OUTPUT
    ---------------------------------
    A    1
    B   2
    C   3
    D   4
    E   5
    a   27
    b   28
    c   29
    d   30
    e   31


    Another   Exc Example

    复制代码代码如下:

    var regexp = /ab*/g;
    var str = "abbcdefabh";
    var rs;
    while ((rs = regexp.exec(str)) != null)
    {
        document.write(rs);
        document.write(regexp.lastIndex);
        document.write("<br />");
    }

    OUTPUT
    ---------------------------------
    abb   3
    ab     9

  • 相关阅读:
    hdu1238 Substrings
    CCF试题:高速公路(Targin)
    hdu 1269 迷宫城堡(Targin算法)
    hdu 1253 胜利大逃亡
    NYOJ 55 懒省事的小明
    HDU 1024 Max Sum Plus Plus
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1257 最少拦截系统
    HDU 1069 Monkey and Banana
    HDU 1104 Remainder
  • 原文地址:https://www.cnblogs.com/Greenzgz/p/4563215.html
Copyright © 2011-2022 走看看