【问题标题】:why is this joi regex validation for hex color failing为什么这个 joi 正则表达式验证十六进制颜色失败
【发布时间】:2015-03-16 23:36:14
【问题描述】:

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

错误

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"}
}

【问题讨论】:

    标签: hapijs joi


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 它应该是 # 标记后的 6 个字符,我认为这是它正在测试的内容 - 在测试中显示为有效的正则表达式 regex101.com/r/dW5mR1/1
    • 原始问题的有效负载部分中的字符串是“#333acf”,包含 7 个字符。它应该是“#333acf”,有 6 个字符。
    • 大声笑,是的,就是额外的空间。我从输入中删除了空格,现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2016-07-02
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多