代码之家  ›  专栏  ›  技术社区  ›  Kevin

使用$0引用javascript字符串中的整个匹配项。替换

  •  15
  • Kevin  · 技术社区  · 14 年前

    我在一组文本中突出显示搜索字符串的实例。我想保留原始文本的大小写,同时替换查询的不区分大小写的匹配项。以下是我的出发点:

    text.replace(new RegExp('(' + query + ')', 'ig'), '<em>$1</em>');
    

    在这种情况下,我需要逃跑 query 为了防止括号破坏子匹配,我想我会尝试:

    text.replace(new RegExp(query, 'ig'), '<em>$0</em>');
    

    但是 $0 似乎没有使用-所有匹配的字符串都替换为$0。不过,我确实找到了另一种选择:

    text.replace(new RegExp(query, 'ig'), function(match) { return '<em>' + match + '</em>'; });
    

    不过,我不太喜欢这个样子。您建议如何进行这种类型的字符串替换?

    2 回复  |  直到 12 年前
        1
  •  25
  •   user166390    14 年前

    使用 $& 而不是 $0 指整个比赛。我责怪佩尔。

        2
  •  2
  •   Jhankar Mahbub    12 年前

    使用$0而不是$0

    str.replace(/\$/,'$$')