Joi 验证正则表达式或模式

Imr*_*fiq 6 arrays validation node.js reactjs joi

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

我有一个包含正则表达式的变量模式,即

pattern = "/^[0-9+]{7}-[0-9+]{1}$/"
Run Code Online (Sandbox Code Playgroud)

并将此模式发送到 Joi 模块并要确认

module.exports = {
    save: {
        body: {
          match: Joi.string().regex(pattern).required
        }
     }
 }
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 12

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

module.exports = (pattern) => ({
  save: {
    body: {
      match: Joi.string().regex(pattern).required
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

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


小智 7

module.exports = (exp) => ({
   save: {
       body: {
         match: Joi.string().pattern(new RegExp(exp)).required()
       }
   }
});
Run Code Online (Sandbox Code Playgroud)

  • 尽管此代码可能会解决问题,但一个好的答案还应该解释该代码的**什么**以及它**如何**提供帮助。 (7认同)