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

使用Yup schema搭配正则校验持续报字段错误该如何解决?

问题根源

你的正则表达式定义存在两处语法错误,导致匹配规则和预期完全不符:

  • 使用RegExp构造函数传入字符串参数时,不需要额外添加正则字面量专用的前后分隔符/,你当前的写法会把/也纳入匹配规则,要求输入内容必须以/开头并结尾,自然所有正常姓名输入都无法通过校验。
  • 字符串中的反斜杠\本身是转义字符,你写的\s在字符串解析后会变成普通字符s,正则实际匹配的是字母s而非空白字符。

正确写法

推荐优先使用正则字面量写法,避免转义踩坑:

const letterRegex = /^[a-zA-Z\s]*$/;

const pg_BinnenCoLoondienst: yup.SchemaOf<RowBinnenCoLoonDienstData> = yup
  .object()
  .shape({
    REV_PE_BCL_Naam: yup.string().required("Name is required").matches(letterRegex, "Name can only contain letters & spaces"),

如果一定要用RegExp构造函数写法,需要删除前后的/,同时把\s转义为\\s:

const letterRegex = new RegExp("^[a-zA-Z\\s]*$");

额外小提示:你原来的错误提示里单词spacces多写了一个c,修正后更规范。

修改后即可正常匹配仅包含英文字母和空格的姓名字段。

内容的提问来源于stack exchange,提问作者el shorty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:00:01