从虚拟字符串中获取一个数字

时间:2016-10-07 10:17:47

标签: javascript regex string

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

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

我试过了:

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

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

此示例的结果是:

This is just an example

1 个答案:

答案 0 :(得分:1)

  

我试过了:

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

那里有两个问题:

  1. 您需要\d,而不是/d。以上是语法错误。

  2. target[$i]将被评估,然后传递到replace。大概你会得到一个ReferenceError,除非在某处定义了$i

  3. 你可能想要成为一个功能:

    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);