我想将blockquote标记中的单行b/h2/h3/h4/h5标记替换为h6标记。
所以我想要这个:
^<[b|h[2-5]]>([^\.]+)</[b|h[2-5]]>$将替换为以下内容:
<h6>\1</h6>但仅当它位于不同行的blockquote标记中时。我认为解决方案必须包括对结束blockquote标记的后视和对开始blockquote的负后视,但我不确定如何实现这一点。
发布于 2015-09-26 02:47:57
正则表达式对于解析任意的HTML来说是非常糟糕的,因为很多事情都可能出错。
这就是说:this demo可能会帮你入门。
这不能正确处理边缘情况。
<div><b>This thing</div></b>将无法正确解析。
如果您知道您的输入是格式良好的,并且没有太深的嵌套(例如,<h2>中的<b>和其他内容),那么它可能会起作用。但是要解析HTML,您确实需要一个DOM解析器。
现在,这并不能处理“在blockquote标记之间”的要求,但是对于Javascript (如果您正在使用它),这不是一个非常简单的任务example。实际上,您必须一遍又一遍地运行相同的过程,以将所有元素转换为h6。
如果你用jQuery代替,你可以做的更安全:jsfiddle
https://stackoverflow.com/questions/32788234
复制相似问题