重复innerHTML.replace

时间:2011-05-25 18:37:50

标签: javascript jquery wordpress caption captions

我正在使用下面的代码在WordPress标题中建立可链接的链接。例如,它成功将http://google.com变为google.com。但是当我在标题中放入多个url时,它只会更改第一个url。有没有办法让它在所有链接上重复操作?

<script type="text/javascript">
    jQuery().ready(function() {
    jQuery("p.wp-caption-text").each(function(n) {
        this.innerHTML = this.innerHTML.replace(new RegExp(" http://([^ ]*) "), " <a href=\"http://$1\">$1</a> ");
    });
    });
</script>

3 个答案:

答案 0 :(得分:2)

RegExp来电进行细微更改应该这样做:

    jQuery().ready(function() {
        jQuery("p.wp-caption-text").each(function(n) {
            $(this).html($(this).html().replace(new RegExp(" http://([^ ]*) ", 'g'), " <a href=\"http://$1\">$1</a> "));
        });
    });

关键是'g'修饰符参数 - g代表全局;换句话说:全部替换。

以下是相关的参考资料:http://www.w3schools.com/jsref/jsref_regexp_g.asp

答案 1 :(得分:2)

RegExp默认只找到一个匹配。

this.innerHTML = this.innerHTML.replace(new RegExp(" http://([^ ]*) ", "g"), " <a href=\"http://$1\">$1</a> ");

添加“g”标志执行全局匹配。

答案 2 :(得分:2)

请改为尝试:

this.innerHTML = this.innerHTML.replace.replace(/http:\/\/([^ ]*)/g, " <a href=\"http://$1\">$1</a> ");

/ g表示此正则表达式是全局的。