我有一个函数可以突出显示AngularJS中字符串中任何数量的单个单词。我想改变它,所以它突出显示我在数组中输入的任何单词,但我不确定如何使用RegExp。这是当前的RegExp:
$scope.highlight = function(haystack) {
return $sce.trustAsHtml(haystack.replace(new RegExp(needle, "gi"), function(match) {
return '<span class="highlightWord">' + match + '</span>';
}));
};
当前&#34;针&#34;变量只是一个简单的字符串,比如“猫”,但我想改变它,所以它包括['cats', 'registered', 'dog']
等等。
答案 0 :(得分:4)
使用join()
方法通过管道|
连接数组元素,管道是{regex中的OR运算符。
此外,您可以使用$&
来获取匹配的字符串,并将其用于替换字符串。
$scope.highlight = function (haystack) {
return $sce.trustAsHtml(haystack.replace(new RegExp(needle.join('|'), "gi"), '<span class="highlightWord">$&</span>'));
};
var arr = ['cat', 'dog', 'elephant'];
var str = 'Cat fears dog and dog fears elephant';
document.body.innerHTML = str.replace(new RegExp(arr.join('|'), 'gi'), '<span class="highlightWord">$&</span>');
&#13;
.highlightWord {
background: yellow;
}
&#13;
要匹配确切的字词,请使用字边界\b
。
str.replace(new RegExp('\\b(' + arr.join('|') + ')\\b', 'gi'), '<span class="highlightWord">$1</span>')