【问题标题】:Joi Validation Regex or patternJoi 验证正则表达式或模式
【发布时间】:2019-08-03 19:40:06
【问题描述】:

我想使用在变量中定义的正则表达式模式

我有一个包含正则表达式的变量 pattern

pattern = "/^[0-9+]{7}-[0-9+]{1}$/"

这个模式发送到 Joi 模块并想要确认

module.exports = {
    save: {
        body: {
          match: Joi.string().regex(pattern).required
        }
     }
 }

如果我使用它,我知道验证工作

module.exports = {
        save: {
            body: {
              match: Joi.string().regex(/^[0-9+]{7}-[0-9+]{1}$/).required
            }
         }
     }

但就我而言,每次正则表达式都会有所不同。所以我不能使用上面的正则表达式模式

【问题讨论】:

  • 是的,我想使用模式变量
  • 最后一句我改了请再检查一下

标签: arrays node.js reactjs validation joi


【解决方案1】:

如果你想使用模式作为变量,只需传递它:

module.exports = (pattern) => ({
  save: {
    body: {
      match: Joi.string().regex(pattern).required
    }
  }
});

并像这样使用它:

const pattern = "/^[0-9+]{7}-[0-9+]{1}$/";
validator(pattern)

【讨论】:

    【解决方案2】:
    module.exports = (exp) => ({
       save: {
           body: {
             match: Joi.string().pattern(new RegExp(exp)).required()
           }
       }
    });
    

    【讨论】:

    • 虽然这段代码可能会解决问题,但一个好的答案还应该解释代码的什么以及它如何提供帮助。
    猜你喜欢
    • 2021-04-20
    • 2020-09-19
    • 2019-01-06
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2015-05-14
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多