g是JavaScript正则表达式修饰符,在菜鸟教程中的解释为:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
下面开始试验:
var str = "up up";
var patt1 = /up/;
document.write(str.match(patt1));
输出结果为:up
结尾加上g 代码如下:
var str = "up up";
var patt1 = /up/g;
document.write(str.match(patt1));
输出结果为:up,up
以上结果和教程中的解释完全相符。
下面开始深度实验
查找文本中两个相同的相邻单词的匹配项,代码如下:
var str = "Is the cost of of gosoline going up up";
var patt1 = /\b([a-z]+) \1\b/g;
document.write(str.match(patt1));
输出结果为:of of,up up
其中\1必须与小括号配合使用。
正则表达式中的小括号"()"。是代表分组的意思。 如果再其后面出现\1则是代表与第一个小括号中要匹配的内容相同。
去掉g后实验,代码如下 :
var str = "Is the cost of of gosoline going up up";
var patt1 = /\b([a-z]+) \1\b/;
document.write(str.match(patt1));
输出结果为:of of,of
结论:g的作用是执行全局匹配,但是会取消掉子表达式的获取(小括号“([a-z]+)” 的表达式为子表达式)。