Org*_*cat 3 javascript regex angularjs
我有一个函数可以突出显示 AngularJS 中字符串中任意数量的单个单词。我想更改此设置,以便它突出显示我在数组中输入的任何单词,但我不确定如何表达 RegExp。这是当前的正则表达式:
$scope.highlight = function(haystack) {
return $sce.trustAsHtml(haystack.replace(new RegExp(needle, "gi"), function(match) {
return '<span class="highlightWord">' + match + '</span>';
}));
};
Run Code Online (Sandbox Code Playgroud)
当前的“needle”变量只是一个普通字符串,如“cats”,但我想更改它,使其包含['cats', 'registered', 'dog']等等。
使用该方法通过管道(正则表达式中的 OR 运算符)join()连接数组元素。|
此外,您可以使用$&获取匹配的字符串并将其用于替换字符串。
$scope.highlight = function (haystack) {
return $sce.trustAsHtml(haystack.replace(new RegExp(needle.join('|'), "gi"), '<span class="highlightWord">$&</span>'));
};
Run Code Online (Sandbox Code Playgroud)
$scope.highlight = function (haystack) {
return $sce.trustAsHtml(haystack.replace(new RegExp(needle.join('|'), "gi"), '<span class="highlightWord">$&</span>'));
};
Run Code Online (Sandbox Code Playgroud)
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>');Run Code Online (Sandbox Code Playgroud)
要匹配精确的单词,请使用单词边界\b。
str.replace(new RegExp('\\b(' + arr.join('|') + ')\\b', 'gi'), '<span class="highlightWord">$1</span>')
Run Code Online (Sandbox Code Playgroud)