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指出全局正则表达式有状态时才意识到。