0
我有一个场景,我需要验证具有不同正则表达式的增值编号,具体取决于它是哪个国家。所以,当现场language
是SE
我想使用这个表达式/^\d{6}-\d{4}$/
场上company.vatNo
,但是当现场language
是NO
我想用这一个/^\d{9}(MVA)?$/
..我想我可以淳佳的时候()去,但它似乎不一起工作。有人知道我能做到吗?Hapi/Joi验证 - 根据另一个关键值的不同Joi.regex
这是我的路在哪里验证:
module.exports = {
method: 'POST',
path: '/signup/{partner}',
handler: createPartner,
config: {
validate: {
payload: {
language: Joi.string().allow(config.supportedLanguages).required(),
company: {
vatNo: {
Joi
.when('language', {
is: 'SE',
then: Joi.string().regex(/^\d{6}-\d{4}$/).required()
})
.when('language', {
is: 'NO',
then: Joi.string().regex(/^\d{9}(MVA)?$/).required()
})
.when('language', {
is: 'FI',
then: Joi.string().regex(/^\d{7}-\d{1}$/).required()
})
}
}
}
}
}
感谢
为什么不只是使用'switch'来设置基于语言的正则表达式的值呢? –
在这种情况下,我可以在哪里使用交换机? @JaredSmith – Jojo
您可以访问Accept-Language头文件,只需放入一个代码来检查它并将适当的正则表达式分配给一个变量,然后用它来验证。 –