const   str = 'This is _XXX_0_ an example',
        target = ['just', 'nothing', 'bla'];


现在,我需要从字符串中获取数字,因为_XXX_ Number _是固定格式,以获取应替换虚拟字符串的元素。

我尝试了这个:

str.replace(/_XXX_(/d+)_/, target[$i]);


数字值可能在0到100之间。我在做什么错?

此示例的结果是:

This is just an example

最佳答案

我尝试了这个:

str.replace(/_XXX_(/d+)_/, target[$i]);



那里有两个问题:


您需要\d,而不是/d。以上是语法错误。
将评估target[$i],然后将其传递给replace。除非您在某处定义了ReferenceError,否则大概会在其中得到$i


您可能想要使该功能:

const result = str.replace(/_XXX_(\d+)_/, function(m, c0) {
    return target[c0];
});


该函数将整体匹配作为第一个参数,然后将任何捕获组作为后续参数。

例:



const   str = 'This is _XXX_0_ an example',
        target = ['just', 'nothing', 'bla'];
const result = str.replace(/_XXX_(\d+)_/, function(m, c0) {
        return target[c0];
    });
console.log(result);

09-25 18:29