Joi验证正则表达式或模式

时间:2019-03-13 07:38:26

标签: arrays node.js reactjs validation joi

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

我有一个变量 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
            }
         }
     }

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果要将模式用作变量,只需将其传递:

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

并像这样使用它:

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