使用RegEx

时间:2016-07-25 15:12:10

标签: javascript angularjs regex

我有一个函数可以突出显示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']等等。

1 个答案:

答案 0 :(得分:4)

使用join()方法通过管道|连接数组元素,管道是{regex中的OR运算符。

此外,您可以使用$&来获取匹配的字符串,并将其用于替换字符串。

$scope.highlight = function (haystack) {
    return $sce.trustAsHtml(haystack.replace(new RegExp(needle.join('|'), "gi"), '<span class="highlightWord">$&</span>'));
};

&#13;
&#13;
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;
&#13;
&#13;

要匹配确切的字词,请使用字边界\b

str.replace(new RegExp('\\b(' + arr.join('|') + ')\\b', 'gi'), '<span class="highlightWord">$1</span>')