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

ini*_*lxy 10 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"
Run Code Online (Sandbox Code Playgroud)

这一切都很好.但是,如果我想引用第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"
Run Code Online (Sandbox Code Playgroud)

当然,在这种情况下,它引用的是组11,即"0",而不是组1后跟"1".

我怎么能解决这种歧义?

anu*_*ava 5

您可以使用String#replace回调函数参数:

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
Run Code Online (Sandbox Code Playgroud)