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

如何使用Yup验证Formik表单中newPassword与confirmNewPassword字段相等?

用Yup验证密码确认字段匹配的方法

你可以直接使用Yup内置的oneOf方法结合ref来实现两个密码字段的匹配验证,不需要额外依赖,同时也能和yup-password的规则兼容。

基础实现示例

import * as Yup from 'yup';
import YupPassword from 'yup-password';

// 扩展Yup,启用yup-password的密码增强验证
YupPassword(Yup);

const validationSchema = Yup.object({
  newPassword: Yup.string()
    .password() // 这里可以叠加yup-password的规则,比如.min(8)、.minLowercase(1)等
    .required('新密码不能为空'),
  confirmNewPassword: Yup.string()
    .oneOf([Yup.ref('newPassword')], '两次输入的密码必须一致')
    .required('请确认新密码')
});

自定义验证逻辑(可选)

如果需要更灵活的验证逻辑,也可以用test方法手动判断:

confirmNewPassword: Yup.string()
  .required('请确认新密码')
  .test('password-match', '两次输入的密码不一致', function(value) {
    // 通过this.parent获取表单其他字段的值
    return this.parent.newPassword === value;
  })

内容的提问来源于stack exchange,提问作者Dimitri Kopriwa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:20:59