You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 13:04:09