如何将液体模板中的十六进制值与正则表达式匹配?
How to match a hexadecimal value in liquid templates with regex?
想要的结果
内容编辑者可以在 Shopify 中输入十六进制值作为背景色。如果给定的输入是有效的十六进制,您如何检查 Liquid 模板的控制流?
需要实现的正则表达式:
^#(?:[0-9a-fA-F]{3}){1,2}$
应添加的 Liquid 片段:
<div class="a-module" style="background-color: {{ bg_color }};">
...
</div>
变量 bg_color
只能是十六进制,包括井号 #
字符。
如何使用正则表达式实现上述内容?
其他解决方案?
如果这不可能,还有哪些其他方法可以匹配液体模板中的字符串?
研究
我在 liquid 模板中找不到太多关于正则表达式的信息。
存在这个问题:
但是我不明白它是如何实现的。
创建您自己的过滤器怎么样。并在此过滤器中检查十六进制。
/^#[0-9a-f]{3,6}$/igm
https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-filters
Shopify liquid 中没有正则表达式,因此无法通过这种方式进行检查。
更好的方法是使用 color filters.
之一
你可以这样做:
{% assign is_color = bg_color | color_to_rgb %}
{% if is_color %}
It's color
{% endif %}
如果颜色有效,它将 return rgb 输出,但如果不是,它将 return null
结果使变量为假。
如果你真的需要使用正则表达式,唯一的选择是依赖 Javascript 并在 DOM 准备好后处理它。
想要的结果
内容编辑者可以在 Shopify 中输入十六进制值作为背景色。如果给定的输入是有效的十六进制,您如何检查 Liquid 模板的控制流?
需要实现的正则表达式:
^#(?:[0-9a-fA-F]{3}){1,2}$
应添加的 Liquid 片段:
<div class="a-module" style="background-color: {{ bg_color }};">
...
</div>
变量 bg_color
只能是十六进制,包括井号 #
字符。
如何使用正则表达式实现上述内容?
其他解决方案?
如果这不可能,还有哪些其他方法可以匹配液体模板中的字符串?
研究
我在 liquid 模板中找不到太多关于正则表达式的信息。
存在这个问题:
但是我不明白它是如何实现的。
创建您自己的过滤器怎么样。并在此过滤器中检查十六进制。
/^#[0-9a-f]{3,6}$/igm
https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers#create-your-own-filters
Shopify liquid 中没有正则表达式,因此无法通过这种方式进行检查。
更好的方法是使用 color filters.
之一你可以这样做:
{% assign is_color = bg_color | color_to_rgb %}
{% if is_color %}
It's color
{% endif %}
如果颜色有效,它将 return rgb 输出,但如果不是,它将 return null
结果使变量为假。
如果你真的需要使用正则表达式,唯一的选择是依赖 Javascript 并在 DOM 准备好后处理它。