如何用regex匹配液体模板中的十六进制值?

问题描述 投票:0回答:2

需要的结果

内容编辑可以在Shopify中输入十六进制值作为背景色。如何用Liquid模板的控制流程检查给定的输入是否是有效的十六进制?

需要实现的regex。

^#(?:[0-9a-fA-F]{3}){1,2}$

需要添加的Liquid代码段:

<div class="a-module" style="background-color: {{ bg_color }};">
  ...
</div>

变量 bg_color 只能是包括英镑在内的十六进制。# 字符。

以上如何用regex实现?

还有其他解决方案吗?

如果这不可能,还有什么其他方法可以在液体模板中匹配字符串?

研究一下

我找不到太多关于液体模板中的regex。

有这样一个问题。在Liquid模板中匹配标签的Regex:"> "在html标签内。

但我不明白如何实现。

html regex hex shopify liquid
2个回答
0
投票

Shopify liquid中没有regex,所以没有办法通过这种方式来检查。

一个更好的方法将是使用其中的一个 滤色镜.

你可以做这样的事情。

{% assign is_color = bg_color | color_to_rgb  %}
{% if is_color %}
  It's color
{% endif %}

如果颜色有效,它将返回一个rgb输出,但如果无效,它将返回一个 null 结果使变量为false。

如果你真的需要使用regex,唯一的选择就是依靠Javascript,在DOM准备好后再处理。


0
投票

那就创建自己的过滤器吧。而在这个过滤器中检查十六进制。

/^#[0-9a-f]{3,6}$/igm

https:/github.comShopifyliquidwikiLiquid-for-Programmers#creat-your-own-filters。

© www.soinside.com 2019 - 2024. All rights reserved.