我正在尝试编写一些代码来遍历 html 论坛数据并替换一些括号。
我基本上是想转
<br><br>
<br>
<img src="blah"></img>
到
[br][br]
[br]
[img src="blah"][/img]
并避免像
那样更改文本:<
<("<) <(")> (>")>
我现在使用 javascript 和正则表达式模式。我能够在两个标签之间找到正则表达式,但不能在字符串周围找到两个标签。这样做的最佳方法是什么?
答案 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));