Javascript正则表达式:保存匹配值

时间:2017-09-27 08:42:23

标签: javascript regex string

我在JS中有以下表达式(typescript,但我想每个人都理解它转化为什么):

  markString(text: string) {
    const regEx = new RegExp(this.partToHighlight, 'ig');
    return text.replace(regEx, `<mark>${this.partToHighlight}<\/mark>`);
  }

问题在于,使用&#39; ig&#39; -option,匹配值可以包含任何大小写,但总是由partToHighlight - 值替换。相反,该函数应该读取匹配的值,保存并输出它与HTML标记包围。我该怎么做呢?我很确定这是一个重复的问题,但我无法找到之前提出过的问题。

2 个答案:

答案 0 :(得分:2)

您需要使用找到的匹配$&替换

markString(text: string) {
    const regEx = new RegExp(this.partToHighlight, 'ig');
    return text.replace(regEx, "<mark>$&</mark>");
}

使用$&,用找到的相同文本替换找到的匹配项,不需要对替换文件进行硬编码,也不需要使用任何回调函数。

有关详细信息,请参阅"Specifying a string as a parameter"

答案 1 :(得分:1)

正如评论中提到的,您需要使用 RegExp.lastMatch $&,在replace()方法中指出匹配的子字符串:

const regEx = new RegExp(this.partToHighlight, 'ig');
return text.replace(regEx, `<mark>$&<\/mark>`);