代码之家  ›  专栏  ›  技术社区  ›  Sergey Rudenko

在Angular 5.29中包含基于regex的formBuilder中断检查验证程序

  •  0
  • Sergey Rudenko  · 技术社区  · 6 年前

    下面是闪电战:

    https://stackblitz.com/edit/ionic-f9kfnm

    this.signupForm = this.formBuilder.group({
          nickname: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
          email: ['', Validators.compose([Validators.email, Validators.required])],
          password: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
          ageTermsAccepted: [false, Validators.pattern('true')],
          policiesAccepted: [false, Validators.pattern('true')]
        });
    

    昵称检查的用户体验看起来不错(只有当输入值无效时,警告才会出现并消失)。

    现在,如果我添加regex验证器:

    this.signupForm = this.formBuilder.group({
          nickname: ['', Validators.compose([Validators.pattern('^[a-zA-Z0-9_-]$'),Validators.minLength(3), Validators.maxLength(20), Validators.required])],
          email: ['', Validators.compose([Validators.email, Validators.required])],
          password: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
          ageTermsAccepted: [false, Validators.pattern('true')],
          policiesAccepted: [false, Validators.pattern('true')]
        });
    

    支票没有按预期进行。

    有没有一条规则,如果我使用regex,那么我只能依赖它,不能将它与其他内置验证器(如max chars)结合使用?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ludevik    6 年前

    正则表达式缺少量词,因此它只接受单个字符。

    '^[a-zA-Z0-9_-]*$'

    minLength maxLength 验证程序(除非您需要不同的验证消息):

    '^[a-zA-Z0-9_-]{3,20}$'