首页 > 技术文章 > 查漏补缺之开g的正则

imgss 2018-04-23 23:41 原文

当正则表达式开了挂,就会多一个g的修饰符,用于表示全局匹配。然而这个表达式却不仅仅是多了个g这么简单,它的方法也会发生改变。由于之前不是太了解,今天好好捋一下,且听我细细道来。

正则表达式的方法和属性

正则表达式的属性基本上与正则表达式的字面量的组成部分一一对应:

正则有两大方法:testexec,其中exec尤其强大,但此处只谈稍微弱一点的test。

test方法在两种模式下的异同

下面就以/foo/和/foo/g来说明。相关代码如下:

var re1 = /foo/, re2 = /foo/g;
re1.test('foobar') // true
re1.test('foobar') // true

re2.test('foobar') // true
re2.test('foobar') // false

为啥多了g之后,就会一次成功,一次失败呢?因为加上g之后正则会对字符串进行全局匹配。也就是说,当正则表达式第一次匹配成功之后,如果没有匹配到字符串末尾,带g的正则表达式会继续匹配下去,直到字符串末尾;而不带g的正则表达式在首次匹配成功之后,就会从头开始匹配。

一个不恰当的比喻是把正则比做

推荐阅读