我使用以下代码尝试打包一个3个字母的月份字符串,如" Nov"或" Sep"带有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);
});
答案 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:
$&
插入匹配的子字符串。