Regex:是以字符串或数字形式返回的数字匹配项

Regex: are digit matches returned as string or number?

本文关键字:数字 返回 字形 字符串 Regex      更新时间:2023-09-26

昨天我在回答一个关于stackoverflow的问题,我自己的回答中有一些不理解的地方。。。

参考文献:有问题的线程,和我的小提琴

这是我答案中的代码:

var rx = /{([0-9]+)}/g;
str=str.replace(rx,function($0,$1){return params[parseInt($1)];});

现在,让我惊讶的是,以下代码也能工作:

var rx = /{([0-9]+)}/g;
str=str.replace(rx,function($0,$1){return params[$1];});

我的问题是:为什么不需要parseInt?JavaScript在什么时候将$1转换为数字?它是在正则表达式中,还是在数组中?

这是因为javascript将索引读取为字符串

array[1]将在读取之前转换为array['1']

object['first']的工作方式与相同