Javascript 使用jquery将匹配的单词包装在链接中

Javascript 使用jquery将匹配的单词包装在链接中,javascript,jquery,regex,Javascript,Jquery,Regex,我正在开发一种功能,可以将匹配的标签或关键字转换为特定DIV标签内的链接 背景:我将文章正文和与文章相关的关键字存储在数据库中,同时在网页中显示文章,我将关键字作为和数组传递给jQuery函数,然后jQuery函数通过…中的文本进行搜索,并将每个匹配元素转换为链接 我的代码工作得很好,但它有流量 它不搜索单词,而是搜索任何匹配项,即使它是破坏我的HTML代码的单词或HTML元素的一部分 如何修改此函数,使其同时搜索匹配的单词 function HighlightKeywords(keywords

我正在开发一种功能,可以将匹配的
标签
关键字
转换为特定
DIV
标签内的链接

背景:我将文章正文和与文章相关的关键字存储在数据库中,同时在网页中显示文章,我将关键字作为和数组传递给jQuery函数,然后jQuery函数通过
中的文本进行搜索,并将每个匹配元素转换为链接

我的代码工作得很好,但它有流量

  • 它不搜索单词,而是搜索任何匹配项,即使它是破坏我的HTML代码的单词或HTML元素的一部分
  • 如何修改此函数,使其同时搜索匹配的单词

    function HighlightKeywords(keywords)
    {        
        var el = $("#article-detail-desc");
        var language = "en-US";
        var pid = 100;
        var issueID = 10; 
    
        $(keywords).each(function()
        {
            var pattern = new RegExp("("+this+")", ["gi"]);
             var rs = "<a class='ad-keyword-selected' href='en/search.aspx?Language="+language+"&PageId="+pid+"&issue="+issueID+"&search=$1' title='Seach website for:  $1'><span style='color:#990044; tex-decoration:none;'>$1</span></a>";
            el.html(el.html().replace(pattern, rs));
        });
    }   
    
    HighlightKeywords(["Amazon","Google","Starbucks","UK","US","tax havens","Singapore","Hong Kong","Dubai","New Jersey"]);
    
    函数高亮显示关键字(关键字)
    {        
    var el=$(“#文章详细说明”);
    var language=“en-US”;
    var-pid=100;
    var=10;
    $(关键字).每个(函数()
    {
    var模式=新的RegExp(“(“+this+”),[“gi”];
    var rs=“”;
    html(el.html().replace(pattern,rs));
    });
    }   
    关键词([“亚马逊”、“谷歌”、“星巴克”、“英国”、“美国”、“避税天堂”、“新加坡”、“香港”、“迪拜”、“新泽西”);
    

    小提琴上的链接

    我认为最简单的方法是使用。所以你会有:

    var pattern = new RegExp("(\\b"+this+"\\b)", ["gi"]);
    
    编辑:
    快速破解以确保它与html元素中的
    US
    不匹配:

    var pattern = new RegExp("(\\b"+this+"\\b)(?![^<]*?>)", ["gi"]);
    
    var pattern=newregexp(“(\\b”+this+”\\b)(?![^)”,[“gi”]);
    
    由于我们使用直接单词匹配,在关键字前后添加空格可能会对您有所帮助

    var pattern = new RegExp("( "+this+" )", ["gi"]);
    

    @KnowledgeSeeker抱歉,不是用这种方式创建正则表达式的,您必须双倍转义。已编辑。@KnowledgeSeeker这不是您要搜索的吗?工作正常。它对我不起作用。请移动到链接上,查看链接的外观
    http://fiddle.jshell.net/Dgysc/29/show/en/search.aspx?Language=en-%3Ca%20级=%27ad关键字已选定%27%20href=%27en/search.aspx?Language=en US&PageId=100&issue=10&search=US%27%20title=%27Seach%20网站%20for:%20%20US%27%3E%3Cspan%20style=%27color:#990044;%20tex装饰:无;%27%3EUS%3C/span%3E%3C/a%3E&PageId=100&issue=10&search=10&search=mega-rich
    当您将鼠标悬停在选定的键上时,我的意思是在jsFiddle示例中你会看到链接被破坏了。这个脚本也会在HTML元素SAH中搜索匹配的关键字。但是它以前也不起作用,所以我没有真正注意到。我会研究它。安吉斯:这可能是一种方法。我会继续尝试,因为这样我将无法匹配像
    亚马逊,