为什么我这个正则表达式会和预想的匹配结果不符?
这个正则是希望对一段文本中 未被某些指定html标签包裹的 段落(换行) 用p标签包裹
指定HTML标签:<div><blockquote> || </div></div>
输入整体看起来是这样:
const content =
一个段落\换行
(空内容直接换行)
另一个段落\换行
<div>(此处没有换行,为了方便看)
<blockquote>......一段引用......</blockquote>
<div>一些额外的信息</div>
</div>
期望结果:
<p>一个段落</p>
<p></p>
<p>另一个段落</p>
<div>(此处没有换行,为了方便看)
<blockquote>......一段引用......</blockquote>
<div>一些额外的信息</div>
</div>
代码如下:
let isRegMatchingQuote = false; //是否已经匹配到'<div><blockquote>'
content = content.replace(/(.*)/gm, (matched, param, offset, string) => {
const flag = matched.match(/<div><blockquote>|</div></div>/);
if(flag) isRegMatchingQuote = !isRegMatchingQuote;
if(!isRegMatchingQuote) return `<p>${param}</p>`
return matched
});
实际结果:
<p>一个段落</p><p></p>
<p></p>
<p>另一个段落</p><p></p>
<div>(此处没有换行,为了方便看)
<blockquote>......一段引用......</blockquote>
<div>一些额外的信息</div>
</div>
每次后面都会多出一组P标签
是为什么呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
修改完并达到预期的代码如下:
好像换行与新行之间有什么东西,有兄弟知道吗?
换行符被匹配到了?