Javascript正则表达式找到

时间:2012-10-04 21:08:11

标签: javascript regex hyperlink replace

我正在使用此正则表达式尝试查找看起来像这样的链接,并仅使用链接的开始和结束标记之间的内容替换它们。

正则表达式:

/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg

我在示例代码上测试了正则表达式并且它可以工作,但是当我尝试将它应用于object.innerHTML时,它不会替换任何东西。有什么问题?

代码:

document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1');
document.write(document.getElementById(preview_div_ID).innerHTML);

上面的“document.getElementById(preview_div_ID).innerHTML”中的一些示例html:

<h5 style="line-height: 9px; margin: 2px; ">
            <span style="font-size: 7px; line-height: 8px; ">
                Ost- (caseous) <a class="tag_link" href="javascript:;" onclick="open_tag('nekros', this);">nekros</a>
            </span>
        </h5>

非常感谢任何帮助

3 个答案:

答案 0 :(得分:5)

请改为尝试:

var links = document.getElementsByTagName("a");
for( var link in links ){
 if( links[link].getAttribute("class").indexOf("tag_link") != -1 ){
  var oldLink = links[link];
  var newLink = document.createElement("a");
  var newLink.innerHTML = oldLink.innerHTML;
  oldLink.parentNode.insertBefore(newLink , oldLink);
  oldLink.parentNode.removeChild(oldLink);
 }
}

它将遍历所有具有类名“tag_link”的链接,然后在保留链接文本的同时删除所有属性。如果您通过id,只需将foreach循环目标设为单个dom元素,就可以将其更改为单个元素。像这样:

function stripAnchor(anchorId){
  var oldLink = document.getElementById(anchorId);
  var newLink = document.createElement("a");
  var newLink.innerHTML = oldLink.innerHTML;
  oldLink.parentNode.insertBefore(newLink , oldLink);
  oldLink.parentNode.removeChild(oldLink);
}

答案 1 :(得分:2)

而不是

document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1')
document.write(document.getElementById(preview_div_ID).innerHTML);

应该是

document.getElementById(preview_div_ID).innerHTML = document.getElementById(preview_div_ID).innerHTML.replace(/<a class="tag_link"[^>]*>([^<]*)<\/a>/mg, '$1')

答案 2 :(得分:0)

这可以通过让JS从HTML创建DOM元素来解决。在我的回答中,我将简单地使用jQuery。

var $code = $('<h5 style="line-height: 9px; margin: 2px; ">
            <span style="font-size: 7px; line-height: 8px; ">
                Ost- (caseous) <a class="tag_link" href="javascript:;" onclick="open_tag(\'nekros\', this);">nekros</a>
            </span>
        </h5>');

$code.find('a').replaceWith(function () {
    return $(this).text();
});

请注意,此代码未经过测试