【发布时间】:2018-09-14 10:37:51
【问题描述】:
我在 .ts 文件中使用以下代码在 Angular 5 中实现了一个模式,用于密码验证。假设这样做 - 支持最少八个字符、至少一个大写字母、一个小写字母、一个数字和一个特殊字符。见:Regex for password must contain at least eight characters, at least one number and both lower and uppercase letters and special characters
wcodePattern = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z0-9\d$@$-_!%*?&]{8,20}";
我明白了,当我在密码文本框中输入一个字符串时,例如Niladri1! 它可以工作,但是,当我输入像 Nopasss123!! 这样的字符串时,它会显示 User name not valid.。
下面是angular 5 html的代码:
<div *ngIf="wcode.errors?.pattern">User name not valid.</div>
我还测试了以下内容,它将字符串作为Noladris 假定为无效。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@-_!])[A-Za-z0-9\d@-_!]{8,20}$
我错过了什么?
【问题讨论】:
-
你从stackoverflow.com/a/21456918/3832970那里得到解决方案了吗?我刚刚修复了那里的一些问题。在末尾添加
$并在字符类中删除一个$。另外,将-放在结束]之前。^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@$!%*?&])[A-Za-z0-9@$_!%*?&-]{8,20}$应该可以工作,请参阅 demo。 -
@WiktorStribiżew 我已经按照你的建议添加了我所采取的措施。请再次检查问题并告诉我。
-
当然,那是因为你没有转义连字符,
[@-_]+匹配所有 ASCII 字母等等。