You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Firebase Bolt中验证数组内所有字符串匹配指定正则?

Firebase Bolt验证数组内所有字符串匹配正则的实现方法

问题背景

在Firebase实时数据库安全规则中,单个字符串匹配正则可以用以下规则:

".validate": "newData.val().matches(/#(?:[A-Fa-f0-9]{3}){1,2}\\b/)"

使用Firebase Bolt编译器时,单个字符串的验证代码如下:

validate() {
  this.background_colors.test(/#(?:[A-Fa-f0-9]{3}){1,2}\b/)
}

但当background_colors是字符串数组时,需要验证数组内每个元素都符合该正则,尝试用each遍历的写法无法通过编译器检查,需找到正确实现方式。

正确实现方案

在Firebase Bolt中,要验证数组所有元素满足条件,需使用every方法(而非each)——each仅执行遍历操作,不会返回验证结果,而every会检查所有元素是否符合条件,返回布尔值供验证逻辑使用。

修改后的验证代码如下:

validate() {
  this.background_colors.every((color) => {
    return color.test(/#(?:[A-Fa-f0-9]{3}){1,2}\b/);
  });
}

原理说明

  • every方法遍历数组每个元素,对每个元素执行传入的回调函数
  • 仅当所有元素的回调都返回true时,every才返回true,验证通过
  • 若任意一个元素不满足条件,every立即返回false,验证失败

注意正则中的转义问题:Bolt代码里\b直接写即可,JSON规则中则需要双转义为\\b。

内容的提问来源于stack exchange,提问作者Marty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:43:12