用于从段落中删除所有属性的正则表达式

Tha*_*ama 2 javascript regex

我知道正则表达式通常不应该用于解析html内容.在我的特殊情况下,我需要它们 (原因是,我使用的是rte编辑器,当粘贴到编辑器中时,需要替换段落的属性).

我有类似的东西

<p attribute1="val1" attribute2="val2" attribut="val3" ...>text blah blah</p>
Run Code Online (Sandbox Code Playgroud)

我需要剥离所有属性,以便我得到

<p>text blah blah</p>
Run Code Online (Sandbox Code Playgroud)

如何使用正则表达式完成此操作?

从所有可能的html标签中去除属性的解决方案也很受欢迎.

Tat*_*nen 5

这样的东西应该适用于所有标签:

replace(/<\s*(\w+).*?>/, '<$1>')
Run Code Online (Sandbox Code Playgroud)

仅限段落,只需替换\w:

replace(/<\s*p.*?>/, '<p>')
Run Code Online (Sandbox Code Playgroud)

\s*在开始允许标签名之前的空白,因此,如果您由于某种原因有< p class="foo">,它也适用于这一点.


win*_*wes 5

因为 html 标签在标签名称之前不能有空格并且可以在多行上继续,所以我建议这样做:

replace(/<(\w+)(.|[\r\n])*?>/, '<$1>');
Run Code Online (Sandbox Code Playgroud)

仅适用于段落:

replace(/<p\s+?(.|[\r\n])*?>/, '<p>');
Run Code Online (Sandbox Code Playgroud)

  • 成功了,但如果要清理整个 html,请记住添加 g (/&lt;(\w+)(.|[\r\n])*?&gt;/g) 。 (2认同)