regex 输入上的Angular FormsModule模式正则表达式不起作用

pqwbnv8z  于 2022-12-30  发布在  Angular
关注(0)|答案(1)|浏览(162)

我尝试使用模板表单,而不是在组件类中定义FormGroup(出于学习目的),我已经放置了一个regex,它应该为密码定义一组规则(至少8个字符、1个大写字母、1个小写字母和1个数字)作为模式属性的值,我敢肯定的regex工程,因为我用它在另一个组件,但在这里它不会工作的一些原因,它似乎匹配任何东西。

<input #password="ngModel" type="password" name="password" [(ngModel)]="credentials.password" required pattern="/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$/gm)]"/>

我错过什么了吗?我用的是Angular 14

5f0d552i

5f0d552i1#

您的代码的问题在于,您使用pattern属性来指定输入字段的正则表达式模式,但是您还将正则表达式模式括在正斜杠(/)中。
为了为pattern属性指定正则表达式模式,您应该只提供不带正斜杠的模式。
下面是您应该如何修改代码:

<input #password="ngModel" type="password" name="password" [(ngModel)]="credentials.password" required pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[a-zA-Z]).{8,}$" />

注意,您还应该从regex模式中删除gm标志,因为pattern属性不支持它们。

相关问题