通过尝试使用循环和正则表达式修复错误,我几乎遭受了重创。以下代码段返回意外结果(当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
返回正确的结果吗?