【问题标题】:js - backreference not working as expectedjs - 反向引用未按预期工作
【发布时间】:2016-04-07 18:03:58
【问题描述】:

我有一个字符串“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”。为什么?

谢谢。

【问题讨论】:

  • 有任何答案对您有用吗?

标签: javascript regex backreference


【解决方案1】:

在 JavaScript 中,使用 $& 而不是 $0 来引用整个匹配值。

String#replace() reference

$& 插入匹配的子串。

如果不使用$1,则pattern中的捕获组没有点,可以使用

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

【讨论】:

    【解决方案2】:

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

    正则表达式: -\d+

    Javascript 代码

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

    Regex101 Demo

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2020-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        • 2019-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多