gpt4 book ai didi

javascript - 使用 RegEx 匹配字符串列表

转载 作者:行者123 更新时间:2023-11-29 17:56:36 26 4
gpt4 key购买 nike

我有一个函数可以在 AngularJS 中突出显示字符串中任意数量的单个单词。我想更改它,以便它突出显示我在数组中输入的任何单词,但我不确定如何用 RegExp 来表达。这是当前的正则表达式:

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

当前的“needle”变量只是一个普通字符串,如“cats”,但我想更改它以包含 ['cats', 'registered', 'dog'] 和等等。

最佳答案

使用 join() 方法通过管道 | 连接数组元素,它是正则表达式中的 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>');
.highlightWord {
background: yellow;
}

要匹配精确的单词,请使用单词边界 \b

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

关于javascript - 使用 RegEx 匹配字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38571440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com