React Native 实现符合指定密码规则的正则表达式问题咨询
符合要求的密码校验正则表达式
你当前编写的正则存在两个问题:
- 没有强制要求包含大写字母,且错误要求「同时包含数字和特殊字符」,而非规则要求的二选一
- 没有明确限制最小长度为8位
正确正则
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W_]).{8,}$/
规则匹配说明
(?=.*[a-z]):正向前瞻,校验字符串中至少存在1个小写字母(?=.*[A-Z]):正向前瞻,校验字符串中至少存在1个大写字母(?=.*[\d\W_]):正向前瞻,校验字符串中至少存在1个数字,或者1个特殊字符(包含下划线等非大小写字母的字符).{8,}:校验字符串总长度不小于8位
校验示例
- 校验通过的密码:
Test1234、Hello@world、Abc_2024 - 校验不通过的密码:
test1234:缺少大写字母TEST1234:缺少小写字母Testabcd:没有数字也没有特殊字符Test123:长度不足8位
React Native 中使用示例(基于Yup表单校验场景)
password: Yup.string() .matches( /^(?=.*[a-z])(?=.*[A-Z])(?=.*[\d\W_]).{8,}$/, '密码长度最少为8位,必须包含大小写字母,且至少含有1个数字或1个特殊字符' ) .required('请输入密码')
内容的提问来源于stack exchange,提问作者Manko
相关产品推荐
相关产品推荐

