为什么这个joi正则表达式验证十六进制颜色失败

时间:2015-03-16 15:12:28

标签: hapijs joi

为什么这个正则表达式应该匹配但它失败了?

错误

child "color" fails because ["color" with value "#333acf " fails to match the required pattern: /^#[A-Fa-f0-9]{6}$/]

  validate: {
        payload:{
            avatar: joi.object().keys({
              color: joi.string().regex(/^#[A-Fa-f0-9]{6}$/),
              icon: joi.string().min(2)
          })
        }
    }

有效载荷

{
    "avatar": {color:"#333acf ",icon:"b1"}
}

1 个答案:

答案 0 :(得分:0)

您的颜色字​​符串末尾有一个额外的空格。应该是

{
    "avatar": {color:"#333acf",icon:"b1"}
}

或者你的正则表达式需要通过删除字符串锚的结尾来允许超过6个字符的字符串。

/^#[A-Fa-f0-9]{6}/