Javascript 带有Java脚本的正则表达式

Javascript 带有Java脚本的正则表达式,javascript,regex,Javascript,Regex,我正在尝试清理angular代码,以便稍后将其发送到jsPDF。 当发现无法识别HTML代码时,jsPDF通常会失败,所以我正在尝试摆脱它 到目前为止,这个表达式是什么样子的 '<code>'.replace(/ng-\w+="(\w|\d\s)+"/,'') 这对于简单的事情很有用,但我需要一个更详细的表达式,我还没有遇到它 ng-\w+=" #Finds expressions like ng-if, ng-model, ng-class, etc (\w|\d\s)+

我正在尝试清理angular代码,以便稍后将其发送到jsPDF。 当发现无法识别HTML代码时,jsPDF通常会失败,所以我正在尝试摆脱它

到目前为止,这个表达式是什么样子的

'<code>'.replace(/ng-\w+="(\w|\d\s)+"/,'')
这对于简单的事情很有用,但我需要一个更详细的表达式,我还没有遇到它

ng-\w+=" 
#Finds expressions like ng-if, ng-model, ng-class, etc

(\w|\d\s)+ 
#This expressions only accepts spaces, numbers and digits

我真正需要的是获得双引号之间的所有内容,为什么不改为使用DOMParser,如下所示?最好不要尝试用正则表达式解析HTML

const html=`
内容
内容2
`;
const parsedDoc=new DOMParser().parseFromString(html,“text/html”);
常量属性删除=[
"ng if",,
“ng模型”,
“ng类”,
];
attributesToRemove.forEach((attribName)=>{
parsedDoc.querySelectorAll('['+attribName+']'))
.forEach((elm)=>elm.removeAttribute(attribName));
});

log(parsedDoc.body.innerHTML)可能是您可以尝试此
/ng-\w+=(“|”).?\1/
在另一个答案上展开

可以使用a,然后使用a遍历所有节点并删除以
ng-
开头的任何属性:

const html=`
内容
内容2
`;
const el=new DOMParser().parseFromString(html,“text/html”);
var treeWalker=document.createTreeWalker(
埃尔,
NodeFilter.SHOW_元素,
{acceptNode:function(node){return NodeFilter.FILTER_ACCEPT;},
假的
);
var节点列表=[];
while(treeWalker.nextNode()){
apply(null,treeWalker.currentNode.attributes)。
过滤器(a=>a.name.startsWith('ng-'))。
forEach((属性,索引)=>{
treeWalker.currentNode.removeAttribute(属性名称);
});
}
console.log(el.documentElement.querySelector('body').innerHTML);