如何用正则表达式匹配HTML注释外的空白字符?
正则表达式匹配HTML注释外的空白(\n、\t、四个空格)
需求说明:
- 需要用正则替换
\n、\t和(四个连续空格),但必须保留HTML注释块(<!--与-->精准包裹)内的所有空白 - 支持多个注释块共存,注释之间的空白需要被正常匹配替换
- 仅允许通过正则替换操作实现,不能修改HTML的其他内容
测试示例代码
<div> <p>Sample text!</p> <!-- <img src="test.jpg" alt="This is an image!" width="500" height="600"> --> </div> <div> <p>Sample text!</p> <!-- <img src="test.jpg" alt="This is an image!" width="500" height="600"> --> </div> <div> <p>Sample text!</p> <!-- <img src="test.jpg" alt="This is an image!" width="500" height="600"> --> </div>
注:需匹配所有四个空格的组合,但排除每个注释内的空格(示例中第4、5、10、11、16、17行的空格)
当前尝试与问题
已按空白类型拆分测试,针对四个空格的正则:
/(?<!<!--.*?(?<!-->.*?)) (?!(?!.*?<!--).*?-->)/gs
该表达式能匹配首尾注释块外的空格,但会错误匹配中间注释块内的空格。
尝试修改后半部分的正则:
/ (?!(?!.*?<!--).*?-->)/gs
寻求改进建议,同时确认该需求是否可行。
更新说明
- 最终目标是在高度定制的TinyMCE实例中,通过
protect属性防止空白被清除,该属性接收正则表达式列表,匹配到的内容会被替换为专属注释<!--mce:protected %0A--> - 发布问题后意识到,其实可以单独保护整个注释块(因为注释不会在编辑器中显示)
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

