sac*_*een 112
g用于全球搜索.这意味着它将匹配所有出现.你通常也会看到i哪些方法忽略了大小写.
"g"标志表示应该针对字符串中的所有可能匹配来测试正则表达式.
没有g旗帜,它只会测试第一个.
Luk*_*e W 33
Javascript中的示例解释:
> 'aaa'.match(/a/g)
[ 'a', 'a', 'a' ]
> 'aaa'.match(/a/)
[ 'a', index: 0, input: 'aaa' ]
Run Code Online (Sandbox Code Playgroud)
dav*_*ler 11
g 是全球搜索标志.
全局搜索标志使RegExp在整个字符串中搜索模式,创建一个可以找到与给定模式匹配的所有实例的数组.
所以之间的区别 /.+/g,并/.+/ 是该g版本会发现每一次出现,而不只是第一个.
Nag*_*aba 10
g ->返回所有匹配项without g ->返回第一个匹配项例子:
'1 2 1 5 6 7'.match(/\d+/)返回["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]。正如你所看到的,我们只能拿第一场比赛"1"。'1 2 1 5 6 7'.match(/\d+/g)返回所有匹配项的数组["1", "2", "1", "5", "6", "7"]。两者之间没有区别/.+/g,/.+/因为它们只会匹配整个字符串一次.的g有差别如果正则表达式可以匹配多于一次或含有基团,在这种情况下.match()将返回匹配的数组代替组的阵列.
正如@matiska指出的那样,该g标志也设置了lastIndex属性.
这样做的一个非常重要的副作用是,如果您对匹配的字符串重用相同的正则表达式实例,它最终会失败,因为它只会开始搜索lastIndex.
// regular regex
const regex = /foo/;
// same regex with global flag
const regexG = /foo/g;
const str = " foo foo foo ";
const test = (r) => console.log(
r,
r.lastIndex,
r.test(str),
r.lastIndex
);
// Test the normal one 4 times (success)
test(regex);
test(regex);
test(regex);
test(regex);
// Test the global one 4 times
// (3 passes and a fail)
test(regexG);
test(regexG);
test(regexG);
test(regexG);Run Code Online (Sandbox Code Playgroud)
除了已经提到的gflag的含义之外,它还会影响regexp.lastIndex属性:
lastIndex是正则表达式实例的读/写整数属性,指定开始下一个匹配的索引.(...)仅当正则表达式实例使用"g"标志指示全局搜索时才设置此属性.
参考:Mozilla开发者网络
| 归档时间: |
|
| 查看次数: |
63326 次 |
| 最近记录: |