对一个字段进行多重验证 是的

Multiple validation on one field Yup

我正在使用 YUP 作为验证器来验证一个字段,但我已经在其中进行了测试,但我无法添加另一个验证。

我验证了这一点:

nome: Yup.string()
            .required(Mensagens.CAMPO_OBRIGATORIO)
            .test('teste-nome-igual',Mensagens.NOME_NAO_DEVE_SER_IGUAL,function(value){
                let check = []
                if(contatos.length > 0)
                    check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
                return !check.includes(true)
            }),

但我还想验证字段 nome 是否不包含任何非 ASCII 字符,如果是,则显示一条消息,它不能包含非字母的内容。

您可以将 test 链接多次作为 test returns 架构。喜欢:

Yup.string()
   .required(Mensagens.CAMPO_OBRIGATORIO)
   .test('teste-nome-igual',
         Mensagens.NOME_NAO_DEVE_SER_IGUAL,
         function(value){
           let check = []
           if(contatos.length > 0)
             check = contatos.map((contato)=> contato.nome.toUpperCase() === value.toUpperCase()) 
           return !check.includes(true)
         }
   )
   .test('test ascii',
         "Nome shouldn't contain non-ascii chars",
         (value) => {
         // test for ascii chars here and return true or false.
        }
   )