我有以下的情况下,我试图解决。
高亮显示短语中关键字的Javascript方法。
vm.highlightKeywords = (phrase, keywords) => {
keywords = keywords.split(' ');
let highlightedFrase = phrase;
angular.forEach(keywords, keyword => {
highlightedFrase = highlightedFrase.replace(new RegExp(keyword + "(?![^<])*?>)(<\/[a-z]*>)", "gi"), function(match) {
return '<span class="highlighted-search-text">' + match + </span>';
});
});
return $sce.trustAsHtml(highlightedFrase)
}
如何编写一个匹配这种情况的正则表达式,以便替换子字符串keyowrds = 'temperature high'
phrase = 'The temperature is <span class="highlight">hig</span>h'
ReGex案例
2条答案
按热度按时间x6yk4ghg1#
如果我没弄错的话,您基本上是想找到
keywords
变量中的每个单词,并在字符串中匹配它们,以便可以将它们 Package 在span中。你需要先将关键字转换成正则表达式,然后进行全局匹配。
基本上,您需要一个模式,其中关键字用管道(
|
)分隔并用括号(()
)括起来,然后您只需要执行一个全局搜索(g
标记),以便匹配所有关键字。有了全局标志,就不需要循环了,一次就可以得到所有的值。
643ylb082#
基于@samanime的答案。我先删除重复的单词,删除空格,突出显示较长的单词。
唯一的问题是跨越元素边界的匹配。例如“The element”中的[“elem”,“lemen”]