全局搜索

    JavaScript的正则表达式还有几个特殊的标志,最常用的是 g ,表示全局匹配:

    var r1 = testg;

    // 等价于:

    var r2 = new RegExp('test', 'g');

    全局匹配可以多次执行 exec() 方法来搜索一个匹配的字符串。当我们指定 g 标志后,每次运行 exec() ,正则表达式本身会更新 lastIndex 属性,表示上次匹配到的最后索引:

    var s = 'JavaScript, VBScript, JScript and ECMAScript';

    var re=/[a-zA-Z]+Script/g;



    // 使用全局匹配:

    re.exec(s); // ['JavaScript']

    re.lastIndex; // 10



    re.exec(s); // ['VBScript']

    re.lastIndex; // 20



    re.exec(s); // ['JScript']

    re.lastIndex; // 29



    re.exec(s); // ['ECMAScript']

    re.lastIndex; // 44



    re.exec(s); // null,直到结束仍没有匹配到

    全局匹配类似搜索,因此不能使用 ^…$ ,那样只会最多匹配一次。

    正则表达式还可以指定 i 标志,表示忽略大小写, m 标志,表示执行多行匹配。