我试图做一点突出显示功能。 我遇到的问题是,我没有将匹配项插入$ 1。 我的功能看起来像
getMatch(str, search) {
let result = str.replace(new RegExp(search, 'gi'), '<span class="match">$1</span>');
return result;
}
如你所见,它应该包装匹配。但事实并非如此。
这里是我如何使用它的一个例子:
let string = 'My string with higlighting.';
let match = getMatch(string, 'With');
我的预期结果是:
My string <span class="match">with</span> highlighting.
但我得到:
My string <span class="match">$1</span> highlighting.
所以$ 1没有被匹配替换。
我该如何解决?
答案 0 :(得分:2)
您的'With'
没有捕获组,因此,$1
被解析为文字字符串。
如果您想将整个匹配项与span
打包在一起,请将$1
替换为$&
。
getMatch(str, search) {
let result = str.replace(new RegExp(search, 'gi'), '<span class="match">$&</span>');
return result;
}
$&
插入匹配的子字符串。
答案 1 :(得分:1)
with不是捕获组,您应该通过添加括号来转换它:
let string = 'My string with higlighting.';
let match = getMatch(string, '(With)');
输出将是:
My string <span class="match">with</span> higlighting.