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

如何在Yup中将密码长度校验与正则校验合并为同一步骤

解决方案

可以合并,你只需在原有正则的正向预查规则中新增长度校验规则,就能通过一次matches调用同时满足长度、字符组合两项校验要求。

合并后的正则

新增(?=.{8,})预查规则限制最小长度为8位,完整正则如下:
/^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=])/

完整代码示例

export const signinSchema = yupResolver(
  yup.object().shape({
    username: yup.string().required("邮箱为必填项"),
    password: yup
      .string()
      .required("密码为必填项")
      .matches(/^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=])/, {
        message: "密码长度不能少于8位,且必须同时包含大写字母、小写字母、数字和指定特殊字符"
      })
  })
)

补充说明

如果你的业务需要分别提示「长度不足」和「字符组合不符合要求」两类不同的错误,不建议合并规则,分开编写min和matches可以触发对应场景的专属错误提示,用户体验更好。


内容的提问来源于stack exchange,提问作者Lê Quốc Khánh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 16:15:02