我有这个有效,但正则表达式与html标签匹配,有没有办法让我忽略html标签。任何人都可以帮我修改正则表达式,所以我的类只应用于文本而不是匹配的html标签吗?
angular.module('my.filters')
.filter('highlight', function ($sce) {
return function (text, filterPhrase) {
if (filterPhrase) text = text.replace(new RegExp('(' + filterPhrase + ')', 'gi'), '<span class="quick-find-highlight">$1</span>');
return $sce.trustAsHtml(text);
};
});
答案 0 :(得分:1)
您可以尝试使用以下代码,其中我按标签拆分并仅在字符串不是标记时替换。
angular.module('my.filters')
.filter('highlight', function($sce) {
return function(text, filterPhrase) {
if (filterPhrase) {
var tag_re = /(<\/?[^>]+>)/g;
var filter_re = new RegExp('(' + filterPhrase + ')', 'gi');
text = text.split(tag_re).map(function(string) {
if (string.match(tag_re)) {
return string;
} else {
return string.replace(filter_re,
'<span class="quick-find-highlight">$1</span>');
}
}).join('');
}
return $sce.trustAsHtml(text);
};
});