Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何排除锚定标记?_Javascript_Jquery_Regex_Regex Negation - Fatal编程技术网

Javascript 如何排除锚定标记?

Javascript 如何排除锚定标记?,javascript,jquery,regex,regex-negation,Javascript,Jquery,Regex,Regex Negation,下面的代码将获取一个输入,并在一个评论列表中运行它,查找关键字,并用一个标记标记将关键字包装起来,该标记将突出显示关键字 这几乎是可行的,除了正则表达式还替换关键字(如果在锚标记之间找到) 如何更改下面的正则表达式以忽略锚定标记 任何帮助都将不胜感激 多谢各位 inputHighlight: function(){ let currentURL = document.location.toString(), reviewList = $('.review-list');

下面的代码将获取一个输入,并在一个评论列表中运行它,查找关键字,并用一个标记标记将关键字包装起来,该标记将突出显示关键字

这几乎是可行的,除了正则表达式还替换关键字(如果在锚标记之间找到)

如何更改下面的正则表达式以忽略锚定标记

任何帮助都将不胜感激

多谢各位

inputHighlight: function(){
    let currentURL = document.location.toString(),
        reviewList = $('.review-list');

    if(currentURL.indexOf('kw') !== -1){
        var reviews = reviewList.html();
        var term = utilities.queryString.getQueryValue("kw");
        term = term.replace(/(\s+)/,"(<[^>]+>)*$1(<[^>]+>)*");

        var pattern = new RegExp("("+term+")", "gi");

        reviews = reviews.replace(pattern, "<mark>$1</mark>");
        reviews = reviews.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/,"$1</mark>$2<mark>$4");

        reviewList.html(reviews);
    }
}
inputHighlight:function(){
让currentURL=document.location.toString(),
reviewList=$(“.review list”);
if(currentURL.indexOf('kw')!=-1){
var reviews=reviewList.html();
var术语=utilities.queryString.getQueryValue(“kw”);
术语=术语。替换(/(\s+)/,“(]+>)*$1(]+>)*”;
var模式=新的RegExp(“(“+术语+”),“gi”);
评论=评论。替换(模式,“$1”);
评论=评论。替换(/([^]*)((]+>)+)([^]*)/,“$1$2$4”);
html(评论);
}
}

这里描述了一个旨在处理“查找单词但不查找特定上下文”情况的技巧:

本质上,它是:匹配不需要的上下文或(使用交替)您的模式。然后,根据匹配的备选方案,替换为第一个(即不需要的上下文),或者替换为第二个由标记标记包围的上下文

因此,替换

var pattern = new RegExp("("+term+")", "gi");
reviews = reviews.replace(pattern, "<mark>$1</mark>");
var模式=新的RegExp(“(“+term+”),“gi”);
评论=评论。替换(模式,“$1”);

var模式=新的RegExp(“
var pattern = new RegExp("<a\\b[^>]*>.*?<\/a>|("+term+")", "gi");
reviews = reviews.replace(pattern, function(match, p1) {
    return p1 ? "<mark>" + p1 + "</mark>" : match;
});