【发布时间】:2020-09-10 01:40:52
【问题描述】:
为什么这不像(我)预期的那样工作?
var re = /blah/gi;
console.log([
'blah-1',
'blah-2'
].filter(i => re.test(i)))
// expected ["blah-1"], ["blah-2"]
// returns only ["blah-1"]
如果我删除全局标志,它会同时返回。
var re = /blah/i;
console.log([
'blah-1',
'blah-2'
].filter(i => re.test(i)))
如果我不使用变量,它也可以工作
console.log([
'blah-1',
'blah-2'
].filter(i => /blah/gi.test(i)))
【问题讨论】:
-
感谢@epascarello。我认为这与将数组转换为字符串和全局搜索有关。直到 hev1 指出全局正则表达式有状态时才意识到。
标签: javascript arrays regex