js - 反向引用不按预期工作

时间:2016-04-07 18:03:59

标签: javascript regex backreference

我有一个字符串" styles-123.min.js",我想用" styles-456.min.js"替换。所以我这样做:

str = "styles-123.min.js";
str = str.replace(/(styles|apps)/, "$0" + "-456");

alert(str)

$ 0未解析,结果为" $ 0-456-min.js"。为什么呢?

感谢。

3 个答案:

答案 0 :(得分:0)

在JavaScript中,使用$&代替$0来引用整个匹配值。

请参阅String#replace() reference

  

$&插入匹配的子字符串。

如果您不使用$1,模式中的捕获组中没有任何意义,您可以使用

str = "styles-123.min.js";
str = str.replace(/styles|apps/, "$&-456");
document.body.innerHTML = str;

答案 1 :(得分:0)

只需使用以下正则表达式检查-123

正则表达式: -\d+

Javascript代码



str = "styles-123.min.js";
str = str.replace(/-\d+/, "-456");
alert(str);




<强> Regex101 Demo

答案 2 :(得分:0)

你可以这样做($1表示第一个匹配的组):

str = "styles-123.min.js";
str = str.replace(/(styles|apps)[0-9-]+/, "$1-456");

alert(str);