我在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标记包围。我该怎么做呢?我很确定这是一个重复的问题,但我无法找到之前提出过的问题。
答案 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>`);