如何使用正则表达式匹配P标签?

3
我希望使用正则表达式匹配以下条件
<P ***anything here*** >

因此,我希望剥离任何具有属性的开头P标签。我不想剥离字符串中的其他内容。
测试用例/
<p style='color: green;'>What a fine day it is</p>

期望结果/
What a fine day it is</p>    

2
使用HTML解析器,而不要使用正则表达式解析HTML。 - simonzack
1
我不是在寻求惯例或正确的做事方式,我正在使用一个不允许任何其他工具的系统,我必须使用正则表达式。 - Rafa Tost
<p>Hello, <strong>World</strong>!</p>怎么样?或者<p>Hello, <u>World</u>!</p>,或者当出现<p>Hello <p>World</p>!</p>这种错误时怎么办? - Brad Christie
1
我正在使用一个不允许使用其他工具的系统,我必须使用正则表达式。请从问题中删除jQuery标签,因为它显然与问题无关,并说明您作为问题的一部分所面临的限制。 - Peter Boughton
1
为什么需要完全删除开头的p标签?文档中是否有多个p标签?只有一个没有属性的开头p标签是否令人满意?看起来你正在询问你的步骤,而不是你的目标,已经假定使用正则表达式匹配删除开头的p标签是解决此问题的方法,但根据您的情况,我可以想象更好的选择。你的目标是什么?获取带有p标签的文档并清除它们的所有属性? - doppelgreener
1个回答

4

正如@kojiro已经提到的那样,这是不好的路径,然而:

var sample = "<p style='color:green;'>What a fine day it is</p>";
var result = sample.replace(/<p\b[^>]*>/ig,'');
// result = "What a fine day it is</p>"

必要注释如果您在 <p> 标签中包含一个包含 > 字符的属性,这将导致失败。但是,再次强调,这就是为什么上述帖子存在于 SO 上的原因。


感谢您实际阅读并回答了这个问题。令人失望的是,有很多人会因为存在更好的解决方案(但在此情况下无法使用)而对问题进行投票。+100 - Rafa Tost
@RafaTost:没问题。在我的看法中,提供帮助(并概述注意事项)是可以接受的答案。只要原帖作者不认为我写的东西是万无一失的,我们就没问题。;-) - Brad Christie
\b 表示这将匹配类似 <p-> 的内容 - 如果这是一个问题,请考虑使用 <p(?:\s[^>]*)?> - Peter Boughton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接