【发布时间】:2017-01-04 19:32:39
【问题描述】:
我正在尝试制作一个小亮点功能。 我遇到的问题是,我没有将匹配项插入 $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 没有被匹配替换。
我该如何解决?
【问题讨论】:
-
我想你想用
span包裹整场比赛,对吧?然后将$1替换为$&。 -
我已经试过了。问题是我搜索不区分大小写但字符串是小写或大写。所以我不能用搜索字符串替换,我需要用匹配替换
-
您的
'With'没有捕获组,因此,$1被解析为文字字符串。$&将在替换中插入整个匹配值。 -
或者,如果您还想使用匹配值填充
match属性,还可以在此处添加$&:'<span class="$&">$&</span>'
标签: javascript regex str-replace