循环外的正则表达式声明

时间:2018-09-17 21:58:07

标签: javascript regex loops variable-declaration

通过尝试使用循环和正则表达式修复错误,我几乎遭受了重创。以下代码段返回意外结果(当i为奇数时失败):

const regex = /^\$([0-9]+)/g;
const prices = ["$299","$89","$9","$0,99"];

for (let i = 0 ; i < prices.length ; i++)
{
  const match = regex.exec(prices[i]);
  console.log(prices[i], match);
}

以下内容是100%正确的:

const prices = ["$299","$89","$9","$0,99"];

for (let i = 0 ; i < prices.length ; i++)
{
  const regex = /^\$([0-9]+)/g;
  const match = regex.exec(prices[i]);
  console.log(prices[i], match);
}

我尝试在循环之外声明match,但仍然失败。我以为它与regex的全局声明有关,但是使用包装函数并不能解决任何问题。而且它不是特定于nodejs的。我可以在Firefox中重复该错误(?)。

有人能解释为什么在循环中声明regex返回正确的结果吗?

0 个答案:

没有答案