试图找到一个将转换的正则表达式:
" <p> Some text <span> with another text </span> </p> "
成:
"<p>Some text <span> with another text</span></p>"
问题是我无法找到从左侧和左侧留下的组标签的解决方案。
到目前为止我创建的是:
/((?:^(?:\s|(?:<[\/]*[\w]+>))+)|(?:\s|(?:<[\/]*[\w]+>))+$)/
这可能是一种解决方法,但它将是两步解决方案(首先:找到左侧和右侧,第二个删除标签之外的空格)。
寻找更优雅的东西,这将通过使用正则表达式进行一次替换来解决我的问题。提前致谢!
这个解决方案不是正则表达式,但它有效:
function trimElement(root, recursive=false){
let todo = [root];
while(todo.length){
let elm = todo.pop();
if(recursive)
todo.push(...elm.children);
if(elm.nodeName.toLowerCase() === "script") continue;
const {firstChild, lastChild} = elm;
if(firstChild.nodeType === 3)
firstChild.data = firstChild.data.trimLeft();
if(lastChild.nodeType === 3)
lastChild.data = lastChild.data.trimRight();
}
console.log(root.outerHTML);
}
trimElement(document.querySelector("div"), true);
<div>
<p> Some text <span> with another text </span> </p>
</div>