【问题标题】:Regex for Removing HTML Links用于删除 HTML 链接的正则表达式
【发布时间】:2016-05-23 12:46:09
【问题描述】:

我正在尝试创建一个正则表达式以从 HTML 表中删除所有链接,以便在将表导出到 excel 时不会显示链接。我正在使用下面的 JavaScript 行,它删除了除链接文本之外的所有内容。关于如何删除链接文本的任何建议?谢谢。

tableHTML = tableHTML.replace(/<a[^>]*>|<\/a>/g, "")

【问题讨论】:

  • 你能展示一些tableHTML内容的例子吗?
  • 请提供至少一个示例和预期结果。
  • 尝试将管道 | 更改为 [^]*?
  • 你最好在 DOM 路由中执行此操作而不是 reg exp

标签: javascript html regex


【解决方案1】:

我建议用这个代替正则表达式

window.onload = function() { // or onclick of your export
  var clonedTable = document.getElementById("table1"); // to do non-destructive copy
  var div = document.createElement("div");
  div.innerHTML=clonedTable.outerHTML;
  [].forEach.call(div.querySelectorAll("table a"),function(link) {
    link.parentNode.removeChild(link);
  });
  document.body.appendChild(div); // or something else
}
<table id="table1">
  <tbody>
    <tr>
      <td>Here is a link <a href="bla">Bla</a> and one more <a href="bla">Bla</a> and one more <a href="bla">Bla</a> and one more <a href="bla">Bla</a> and one more</td>
    </tr>
    <tr>
      <td>And a link <a href="bla">Bla</a> and one more <a href="bla">Bla</a></td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 感谢您的回复,这开辟了很多可能性。但是,对于我的问题,我不想实际操作 DOM 并更改显示的页面,我只想编辑用于创建 Excel 文档的 HTML。
  • 我明白了。您不必渲染表格。然而,强烈建议不要使用正则表达式,而是使用 dom,你有选择器的力量,这样可以干净地删除对象
  • 我怎样才能像这样操作 html 而不会将更改反映在页面上的表格中?
【解决方案2】:

试试这个

<p id="mytext">Hello World</p>
<script>
    var element = document.getElementById('mytext');
    var highlightedText = element.innerHTML;
    var parent = element.parentNode;
    var newNode = document.createTextNode(highlightedText);

    parent.insertBefore(newNode, element);
    parent.removeChild(element);
</script>

【讨论】:

    【解决方案3】:

    我不确定你想做什么,但是如果你想删除所有链接,这个模式会帮助你:

    /<a.*?a>/gm
    

    Online Demo


    完整代码:

    tableHTML = tableHTML.replace(/<a.*?a>/gm, "")
    

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 2010-10-23
      • 2010-10-23
      • 2010-10-31
      • 1970-01-01
      • 2010-10-20
      • 2016-09-04
      相关资源
      最近更新 更多