我想让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
}
}
}
但是就我而言,每次正则表达式都会不同。所以我不能使用上面的正则表达式模式
答案 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)