一些背景:我们正在为我们的Middleman项目添加一个样式指南。这是供其他开发人员使用的,所以我们希望我们的代码示例具有可读性。然而,当我们更改组件时,我们不想在多个地方更新代码。正则表达式在HTML标记中删除多个空格和换行符
我们使用redcarpet进行markdown解析并创建代码示例。
<%= partial '../partials/component' %>
```html
<%= partial '../partials/component' %>
```
但是,这样做会留下非常混乱和不可读的代码示例。我们可以用htmlbeautifier清理它们。但是我们仍然存在HTML标签内多个空格和换行符的问题。
它往往是这样的:
<article class="default-s-sans teaser-media"
data-item-ratio="16x9"
data-background-color="d-blue"
>
我们要删除的标签内多余的空格和换行,这是<
和>
之间。但不是元素之间,所以应该离开这个不变:
<div>
<span class="price">$100</span>
<span>
Word word
</span>
</div>
我已经得到了this far:
html.gsub(/(?<=<)(\s{2,})(?>)/, ' ')
但它只会<
和>
之间匹配的空格,如果有之间没有任何东西是别的。
如何匹配<
和>
之间的空格,但是还允许其他字符?
这可能是过于复杂,只有1个正则表达式,这个效果要好得多。我改变了第一个正则表达式,以确保我只匹配一个标签:'/ <([^>] +)> /' – pstenstrm