在执行JavaScript正则表达式替换时,如何将捕获组$N后跟整数转义?

在执行JavaScript正则表达式替换时,如何将捕获组$N后跟整数转义?,javascript,regex,replace,Javascript,Regex,Replace,我知道在JavaScript中,您可以执行正则表达式替换为引用来捕获组,如下所示: > "Hello World 1234567890".replace( /Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/, "What's up $1"); "What's up World" 这很好。但是,如果我想引用第1组,然后紧接着是“1”,该怎么办。说我想看什么“世界上发生了什么事1”。所以我要写: > "Hello

我知道在JavaScript中,您可以执行正则表达式替换为引用来捕获组,如下所示:

> "Hello World 1234567890".replace(
        /Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
        "What's up $1");
"What's up World"
这很好。但是,如果我想引用第1组,然后紧接着是“1”,该怎么办。说我想看什么“世界上发生了什么事1”。所以我要写:

> "Hello World 1234567890".replace(
        /Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
        "What's up $11");
"What's up 0"
当然,在本例中,它引用的是组11,即“0”,而不是组1后跟“1”

如何解决这种歧义?

您可以使用
String#用回调函数参数替换

str = "Hello World 1234567890";
repl = str.replace(/Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/, function(r, g) {
      return "What's up " + g + '1';});

//=> What's up World1
不要那样做^^ ^:

(1 + "Hello World 1234567890").replace(
    /(\d)Hello (World) (1)(2)(3)(4)(5)(6)(7)(8)(9)(0)/,
    "What's up $2$1"
);