如何在Yup单个字段添加多验证?需在已有test基础上新增非ASCII校验
没问题,我来帮你搞定这个校验规则~
我们可以直接利用Yup的matches方法,通过正则表达式来限制字段只能包含ASCII字母(支持大小写),如果需要允许空格的话也可以一并加入规则。下面是整合后的完整代码:
nome: Yup.string() .required(Mensagens.CAMPO_OBRIGATORIO) // 新增的非ASCII字符/非字母校验 .matches(/^[A-Za-z\s]*$/, "不能包含非字母内容") .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) })
规则细节说明:
- 正则表达式
/^[A-Za-z\s]*$/:^和$锁定字符串的开头和结尾,确保整个输入内容都符合规则,不会出现部分合规的情况[A-Za-z]匹配所有ASCII范围内的大小写字母\s允许输入空格(如果不需要允许空格,直接去掉\s即可,改成/^[A-Za-z]*$/)*表示允许零个或多个符合规则的字符(因为前面已经有required校验,空值会被提前拦截,所以这里不用担心空值通过校验)
- 第二个参数就是你需要的提示文本:
"不能包含非字母内容"
如果你的需求是严格限制只能包含纯ASCII字母,连空格都不允许,那把正则改成/^[A-Za-z]*$/就好啦。
内容的提问来源于stack exchange,提问作者Matheus Ribeiro
相关产品推荐
相关产品推荐

