首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于密码的Angular Validators.pattern

用于密码的Angular Validators.pattern
EN

Stack Overflow用户
提问于 2020-01-13 17:47:42
回答 2查看 85关注 0票数 0

嗨,我正在学习Angular 8表单验证器,我可以知道如何使用Angular验证器来强制用户满足所有这些要求吗?-至少1个A-Z -至少1个a-z -至少10-9-至少1个特殊字符

这是我尝试过的代码,但不能正常工作,不知道为什么。

FormGroupCode:

代码语言:javascript
复制
newPassword: ['', [Validators.required, Validators.minLength(8), Validators.maxLength(50)], Validators.pattern((/?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&].{8,}/)],

HtmlCode:

代码语言:javascript
复制
<input type="password" class="form-control" id="newPassword" name="newPassword"
                           placeholder="{{'global.form.newpassword.placeholder' | translate}}"
                           formControlName="newPassword">

                        <small class="form-text text-danger"
                               *ngIf="passwordForm.get('newPassword')?.errors?.pattern">
                            Must have alphanumeric and specia character.
                        </small>

对不起,这可能是一个愚蠢的问题,但真的不知道如何解决。感谢您的时间和努力

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-13 18:03:17

尝尝这个

代码语言:javascript
复制
Validators.pattern(^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$])[a-zA-Z0-9@#%$]{8,16}$)
票数 0
EN

Stack Overflow用户

发布于 2020-01-13 18:01:01

看起来你没有使用正确的签名。FormGroup是许多FormControl的对象。在这里,FormControl应该有值和验证器作为它的第一个和第二个参数。

代码语言:javascript
复制
  myFormGroup = {
    newPassword: new FormControl(
      '',
      [
        Validators.required,
        Validators.minLength(8),
        Validators.maxLength(50),
        Validators.pattern(/\d+/)
      ]
    )
  };

从您的代码中可以看出,当Validators.pattern是一个AsyncValidatorFn时,它看起来像是一个ValidatorFn

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59714054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档