使用$ 1解释" $ 1"作为字符串

时间:2015-11-02 15:07:07

标签: javascript regex replace

我使用以下代码尝试打包一个3个字母的月份字符串,如&#34; Nov&#34;或&#34; Sep&#34;带有span标记。但是,写入DOM的文本字面上是<span class="list-view-month">$1</span>,其中$ 1是按字面解释的,而不是作为正则表达式匹配的反向引用。

我在这里做错了什么?

谢谢!

// Date wrap
$('.list-view .dates').each(function(){
    var $me = $(this);
    var oldHtml = $me.html();
    var newHtml = oldHtml.replace(/\b[A-Za-z]{3}\b/,'<span class="list-view-month">$1</span>');
    $me.html(newHtml);
});

1 个答案:

答案 0 :(得分:3)

由于/\b[A-Za-z]{3}\b/正则表达式没有未转义的圆括号,并且您需要在replace方法中引用整个匹配,因此您只需使用$&反向引用。

var newHtml = oldHtml.replace(/\b[A-Za-z]{3}\b/,'<span class="list-view-month">$&</span>');
                                                                               ^^

请参阅String#replace documentation

  

$& 插入匹配的子字符串。