regex - 编写一个匹配至少 x 个前瞻条件的正则表达式
问题描述
我正在为一个表单编写验证yup
:
const ValidationSchema = Yup.object().shape({
password: Yup.string()
.matches(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$/, {
message:
"Must be at least 8 characters long, contain a lowercase letter, an uppercase letter, and a number."
})
.min(8, "Must be at least 8 characters long.")
.matches(/(?=.*[a-z])/, { message: "Must contain a lowercase letter." })
.matches(/(?=.*[A-Z])/, { message: "Must contain an uppercase letter." })
.matches(/(?=.*\d)/, { message: "Must contain a number." })
.required("Password is required."),
passwordConfirmation: Yup.string()
.oneOf([Yup.ref("password"), null], "Passwords don't match.")
.required("Password confirmation is required.")
});
如果至少有 2 个错误,则应显示第一条验证消息 ( "Must be at least 8 characters long, contain a lowercase letter...
)。否则,它应该回退到任何其他验证消息。
如何才能做到这一点?目前,始终显示多重验证错误(仅在至少有 2 个错误时才显示)。我不是正则表达式的大师,所以任何帮助表示赞赏。
解决方案
推荐阅读
- php - 如何在服务器上使用 SSH 命令执行本地 Shell 脚本?
- angular - 角度示意图:未找到:我的示意图错误
- c# - c#中new object()到底做了什么
- python - 如何在Python中提取第一个字符
- javascript - 用 Javascript 编写代码,使用 if、else 和 prompt。
- java - 找不到参数的方法 abiFilters() [x86]
- c++ - 使用模板前向声明所有未来函数会导致歧义,而不是将声明与定义配对
- mysql - 使用 javafx 将图像上传到数据库
- python - 将 CSV 文件附加到列表
- javascript - 收集数组中的值并将其传递给php