javascript - 正则表达式替换在 IE 中不起作用

标签 javascript jquery regex internet-explorer

好的,我已经使用下面的答案和评论中的改进代码更新了这个问题,并且与真实项目更相似。但它仍然无法在 IE8 中运行。 fiddle here

<ul id="definitions">
    <li id="defid63">keyword1<input type="hidden" value="63" /></li>
    <li id="defid61">keyword2<input type="hidden" value="61" /></li>
    <li id="defid62">Keyword3<input type="hidden" value="62" /></li>
</ul>

<div id="html">Lorem ipsum keyword1 dolor keyword2 sit keyword3 amet, consectetur adipisicing elit, sed do eiusmod tempor</div>

我有一个关键字列表 ( ul > li ),并且有一个包含一些文本的字符串。我想用 <a> 包装每个出现的关键字。 -标签。我的代码在 Firefox 和 Chrome 中运行良好,但 IE(8) 与正则表达式不匹配。

jQuery(function($) {

    // created by Gracenotes
    // http://goo.gl/MTkcY
    RegExp.quote = function(str) {
        return str.replace(/([.?*+^$[\]\\(){}-])/g, "\\$1");
    };

    var $node = $('#html'),
        // the dom element
        html = $node.html(); // the text we'll manipulate

    $('#definitions li').each(function() {
        var defid = $(this).find('input').val(),
            deftext = $(this).html().split("<input")[0],
            //the keyword
            //pattern = eval('/\\b('+RegExp.quote(deftext)+')\\b/gi');
            pattern = new RegExp('\\b(' + RegExp.quote(deftext) + ')\\b', 'gi');
        html = html.replace(pattern, '<a href="#id=' + defid + '">$1</a>');
    });

    // replace the dom content with our updated text
    $node.html(html);

});

最佳答案

这应该有效:

var pattern = new RegExp('\b('+def+')\b','gi');

passing variable to a regexp in javascript

关于javascript - 正则表达式替换在 IE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053386/

相关文章:

Javascript 正则表达式将文本字段限制为仅数字(必须允许不可打印的键)

regex - 使用正则表达式舍入

javascript - 我想要那个 "mousewheel event delay"

jquery - 如何在我的网站中嵌入YouTube channel

javascript - JQTouch 无法播放链接的 mp3 文件

JQuery 通过内部文本选择

javascript - 访问 JSON 值持有者的名称

javascript - 使用 RegExp 在 JavaScript 中拆分字符串,忽略方括号内的定界符

javascript - 为什么我应该使用 jQuery 而不是 GWT?

javascript - 如何查询每天特定时间创建的所有文档?