我需要做一个密码模式验证器
密码应该是:
- 1个大写字母
- 1个小写字母
- 一个数字
- 最小长度为 8。
我发现了这个正则表达式模式:
Validators.pattern('/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!$%@#£€*?&]')
然而,验证器总是声称我的输入无效
errors:
pattern:
actualValue: "Test1234"
requiredPattern: "^/^(?=.*[A-Za-z])(?=.*d)[A-Za-zd!$%@#£€*?&]$"
根据 https://regex101.com/r/AfAdKp/1该值应该是有效的。
编辑:澄清一下,Test1234 应该可以工作
最佳答案
您当前的正则表达式存在多个问题:
- 你的正则表达式没有字符类的量词
Validators.pattern
不需要定界符,但你在开始时加了一个- 你应该加倍转义标记。
你需要的是:
Validators.pattern('^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=\\D*\\d)[A-Za-z\\d!$%@#£€*?&]{8,}$');
关于regex - 使用正则表达式的 Angular 模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51046044/