正则表达式替换“<X>”括号

时间:2021-06-28 13:39:25

标签: javascript regex

我正在尝试编写一些代码来遍历 html 论坛数据并替换一些括号。

我基本上是想转

<br><br>
<br>
<img src="blah"></img>

[br][br]
[br]
[img src="blah"][/img]

并避免像

那样更改文本
:<
<("<) <(")> (>")>

我现在使用 javascript 和正则表达式模式。我能够在两个标签之间找到正则表达式,但不能在字符串周围找到两个标签。这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

可能有一种更优雅的方法来做到这一点 - 但这基本上是我在 2000 年代早期所做的(使用 const/let 等对更现代的 JS 进行轻微更新)

const input = `<br><br>
<br>
<img src="blah"></img>`;
const body = document.createElement('body');
body.innerHTML = input;
function square(obj) {
  let out = '';
  let el;
  while(el = obj.firstChild) {
    if (el.nodeType == 3) {
      out += el.nodeValue;
    } else {
      out += `[${el.nodeName}]`;
      out += square(el);
      if (!["BR"].includes(el.nodeName)) {
        out += `[/${el.nodeName}]`;
      }
    }
    el.remove();
  }
  return out;
}

console.log(square(body));