Javascript bookmarklet,搜索正则表达式,动态替换为html链接

时间:2010-10-27 15:50:03

标签: javascript regex bookmarklet

我有一个html,它有很多以下内容:

<TD CLASS="broke"> - WF-1234567 -  </TD>
<TD CLASS="broke"> - WF-1111111 -  </TD>
<TD CLASS="broke"> - WF-7654321 -  </TD>

我想制作一个javascript书签,用超链接替换所有7位数字。 如何做到这一点?

我尝试了许多错误......

javascript:
var match=new RegExp("(- WF-....... - Review)","ig");
var x = document.getElementsByClassName("broke").innerHTML;
x=x.replace(match,<a href="www.blah.com/"+7digitSubsetofMatch>7digitlink</a>);
document.getElementsByClassName("browseItemLocation").innerHTML=x;

1 个答案:

答案 0 :(得分:1)

getElementsByClassName会返回一个列表,而不是一个innerHTML可用的项目。你必须遍历列表并单独处理每个项目。

javascript:(function(){

var elements = document.getElementsByClassName("broke");

for (var j = 0; j < elements.length; j++) {

要查找并替换该号码,您需要调整正则表达式分组 - 现在您正在捕获更大的字符串而无法获取数字。你这样做是通过移动括号来立即围绕数字

    var pattern = new RegExp("WF-(\\d+)", "ig");
    var match = elements[j].innerHTML.match(pattern);

如果匹配成功,则match[0]将匹配整个字符串,match[1]将为数字

你不能在javascript中写文字html-它必须是一个字符串。

    var x = elements[j].innerHTML.replace(match[1],
        '<a href="www.blah.com/' + match[1] + '">' + match[1] + '</a>');

然后你cna替换原来的html。

    elements[j].innerHTML = x;
}

})()

我不知道你的最后一行是什么,但似乎没必要。