传递一个函数来替换为带有match的正则表达式作为arg

时间:2017-09-07 08:03:09

标签: javascript regex

这个javascript代码需要传递调用函数convert并使用其返回的值来替换每个匹配。但它没有将cid值发送到convert函数。知道怎么样?感谢

const convert = function (cid) {
    console.log('got: ' + cid); // got NAN
    const converted = Math.round(Number(cid) * 16.3871);
    console.log(converted);
    return converted
};
    return myStr.replace(/(\d{3})/g, convert('$1'));
}

1 个答案:

答案 0 :(得分:1)

不要将convert函数作为第二个replace参数调用。它将自动调用并自行传递$1匹配作为第一个convert参数。 第二个return不正确(不起作用)。

const convert = function (cid) {
      console.log('got: ' + cid); // got NAN
      const converted = Math.round(Number(cid) * 16.3871);
      console.log(converted);
      return converted;
    };

var someString = 'abc134def';

console.log(someString.replace(/(\d{3})/g, convert));