试图编辑所有<a> in a string</a>

时间:2012-05-17 15:37:05

标签: javascript regex replace

尝试使用字符串中的javascript为所有标记添加target =“_ blank”。

为什么这样做:

var editdescription = itemdescription.replace(new RegExp("All","g"),"Every");

但不是吗?

var editdescription = itemdescription.replace(new RegExp("<a","g"),"<a target="_blank"");

2 个答案:

答案 0 :(得分:5)

您错误地嵌套了双引号。而不是

"<a target="_blank""

尝试转义双引号:

"<a target=\"_blank\""

您编写它的方式被视为两个单独的字符串"<a target=""",其中包含_blank

如前所述多次,最好是don't parse HTML with regex

答案 1 :(得分:1)

您不应该尝试使用正则表达式处理HTML,因为有太多可能出错的事情。在这种情况下,如果您将标记设为<A HREF...>该怎么办?或者以a开头的其他代码如<area><abbr><acronym>等等呢?如果已经有target属性怎么办?

相反,请尝试将HTML视为HTML而不是纯文本。你手上有一个engire引擎。

var tmp = document.createElement('div');
tmp.innerHTML = itemdescription;
var links = tmp.getElementsByTagName('a'), l = links.length, i;
for( i=0; i<l; i++) {
    links[i].setAttribute("target","_blank");
}
editdescription = tmp.innerHTML;