Validation 使用JOI验证分隔符分隔的值

Validation 使用JOI验证分隔符分隔的值,validation,joi,Validation,Joi,我有一个用例,需要验证一组由|分隔的值 我照做了,但它抛出了一些错误。 我有什么办法可以做到这一点吗 示例-AA | BB | CC | DD 现在,我需要验证所有的值(AA、BB、CC、DD)都是字符串 我相信我不能使用正则表达式,因为它只会验证第一个值 此外,我的代码中还有许多其他验证,因此我不希望循环验证过程 如果我不清楚,请告诉我。谢谢 TL;博士: const-Joi=require('Joi')。extend(Joi=>({ base:joi.array(), 强制:(值,助手)=>

我有一个用例,需要验证一组由|分隔的值

我照做了,但它抛出了一些错误。 我有什么办法可以做到这一点吗

示例-AA | BB | CC | DD

现在,我需要验证所有的值(AA、BB、CC、DD)都是字符串

我相信我不能使用正则表达式,因为它只会验证第一个值

此外,我的代码中还有许多其他验证,因此我不希望循环验证过程

如果我不清楚,请告诉我。谢谢

TL;博士:

const-Joi=require('Joi')。extend(Joi=>({
base:joi.array(),
强制:(值,助手)=>({
value:value.split?value.split(“|”):value,
}),
键入:“versionArray”,
}))
自该注释编写后,
.extend
name
属性已被删除,
强制函数
应返回一个属性为
值的对象

>Joi.versionArray().validate('AA | BB | CC | DD')
{值:['AA','BB','CC','DD']}
>Joi.versionArray().validate('AA | BB,CC | DD')
{值:['AA','BB,CC','DD']}
从这里开始,您可以使用
.items(…)
函数验证返回数组中的每个字符串:

const regex=new RegExp('^[a-zA-Z]+$)//每个字符必须是a-Z或a-Z 未定义 >Joi.versionArray().items(Joi.string().regex(regex)).validate('AA | BB | CC | DD')) {值:['AA','BB','CC','DD']} >Joi.versionArray().items(Joi.string().regex(regex)).validate('AA | BB | CC | 00')) {值:['AA','BB','CC','00'], 错误: {ValidationError:“[3]”的值为“00”无法匹配所需的模式:/^[a-zA-Z]+$/_original:'AA | BB | CC | 00',详细信息:[[Object]} >Joi.versionArray().items(Joi.string().regex(regex)).validate('AA | BB,CC | DD')) {值:['AA','BB,CC','DD'], 错误: {ValidationError:“[1]”的值为“BB,CC”与所需的模式不匹配:/^[a-zA-Z]+$/_original:'AA | BB,CC | DD',详细信息:[[Object]}