Javascript 全局RegExp和数组

Javascript 全局RegExp和数组,javascript,arrays,regex,Javascript,Arrays,Regex,为什么这不能像(我)预期的那样起作用 var re=/blah/gi; console.log([ “废话-1”, “废话-2” ].filter(i=>re.test(i))) //预期的[“blah-1”],[“blah-2”] //仅返回[“blah-1”]您不应该重用正则表达式,因为它会修改全局正则表达式的状态;也就是说,它将使lastIndex属性超过当前匹配项。相反,您可以使用String#match或在每次迭代中重新创建正则表达式 var re=/blah/gi; consol

为什么这不能像(我)预期的那样起作用

var re=/blah/gi;
console.log([
“废话-1”,
“废话-2”
].filter(i=>re.test(i)))
//预期的[“blah-1”],[“blah-2”]

//仅返回[“blah-1”]
您不应该重用正则表达式,因为它会修改全局正则表达式的状态;也就是说,它将使
lastIndex
属性超过当前匹配项。相反,您可以使用
String#match
或在每次迭代中重新创建正则表达式

var re=/blah/gi;
console.log([
“废话-1”,
“废话-2”

].filter(i=>i.match(re))谢谢@epascarello。我认为这与数组转换为字符串和全局搜索有关。直到hev1指出全局正则表达式有状态时才意识到。