多行正则表达式替换标签内的标签?

时间:2015-09-25 18:11:09

标签: html regex lookbehind negative-lookbehind

我想用b标记替换单行h2 / h3 / h4 / h5 / blockquote标记,{ {1}}代码。

所以我想要这个:

h6

替换为:

^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$

但仅限于<h6>\1</h6> 标记内,该标记位于不同的行上。我认为解决方案必须包含一个关闭blockquote标记的lookbehind和一个开头blockquote的负面看法,但我不确定如何实现它。

1 个答案:

答案 0 :(得分:0)

正则表达式对于解析任意HTML非常糟糕,因为许多事情都可能出错。

话虽如此:this demo可能会让你开始。

这并不适用于边缘情况。

<div><b>This thing</div></b>

无法正确解析。

如果您知道自己的输入结构良好且嵌套不太深(例如,<b>内的<h2>,则可能有效)。但是要解析HTML,你真的需要一个DOM解析器。

现在,这不会处理blockquote标记&#34;之间的&#34;要求,但使用Javascript(如果这是您正在使用的),这不是一个非常简单的任务example。您必须反复运行相同的过程,以便将所有元素转换为h6

如果您要使用jQuery,则可以更安全地执行此操作:jsfiddle