18910140161

JavaScript-使用regex从HTML字符串值中删除HTML属性-堆栈溢出

顺晟科技

2022-10-18 14:02:26

47

我需要从HTML字符串中删除HTML属性。我有一些格式化的文本输入字段,允许用户复制和粘贴文本,同时保持基本的HTML.问题在于,从Word文档中复制的某些文本带有需要删除的属性。目前,我使用的正则表达式可以在正则表达式测试器中工作,但没有删除任何属性。

删除属性的

代码:

var stringhtml = '<div class="Paragraph  BCX0 SCXW244271589" paraid="1364880375" paraeid="{8e523337-60c9-4b0d-8c73-fb1a70a2ba58}{165}" style="margin-bottom: 0px;margin-left:96px;padding:0px;user-select:text;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent; overflow-wrap: break-word;">some text</div>'

var regex = /[a-zA-Z]*=".*?"/;

var replacedstring = stringhtml.replace(regex, '');

document.write(replacedstring);

任何帮助都很感激!


顺晟科技:

关于为什么使用正则表达式解析HTML可能相当危险,

有相当多的文献——这个著名的StackOverflow问题就是一个很好的例子。

正如@Polymer所指出的,您当前的正则表达式将丢失带有单引号的属性,但也存在其他可能性:data属性–例如data-id="233",以及非引号属性,如disabled。可能还有更多!

当你在HTML中遇到新的组合时,

你可能总是在追赶这种方法,总是不得不改变你的正则表达式。

更安全的方法可能是使用DOMParser方法将字符串解析为HTML,并以这种方式从中提取内容:

let stringhtml = '<div class="Paragraph  BCX0 SCXW244271589" paraid="1364880375" paraeid="{8e523337-60c9-4b0d-8c73-fb1a70a2ba58}{165}" style="margin-bottom: 0px;margin-left:96px;padding:0px;user-select:text;-webkit-user-drag:none;-webkit-tap-highlight-color:transparent; overflow-wrap: break-word;">some text</div>'

let parser = new DOMParser();
let parsedResult = parser.parseFromString(stringhtml, 'text/html');

let element = document.createElement(parsedResult.body.firstChild.tagName);

element.innerText = parsedResult.documentElement.textContent;

console.log(element);

  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航