如何使此自定义验证器起作用?

时间:2018-12-14 16:54:39

标签: angular angular-reactive-forms angular-forms

使用自定义验证器模式时遇到麻烦。成功验证的基本要素应为1)至少1个数字的开头2)数字后的空格3)至少1个代表街道名称的字母字符。除此之外的任何内容仍应视为正确。

this.myForm = this.fb.group({
      street:['',[Validators.required, Validators.pattern(/^\d+\s*[a-zA-Z].*$/ig)]],
      city:['',Validators.required],
      state: ['', Validators.required],
      zip:['',Validators.required],
      notes:[''],
    })

44 North Road #12验证,但44 North Road #123无效。基本上,在我键入44 North Road后,键入的所有其他字符(无论是什么字符)都会使其验证失败,直到输入下一个字符,然后在键入下一个字符时再次失败。当我添加字符时,它只是在无效和有效之间来回乒乓球。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我相信您的正则表达式有些不足。这是一个符合您条件的简单表达式:

^\d+\ [A-Za-z].*$
  • \d+:一位数字
  • \\之后的空格):空格
  • [A-Za-z]:一个字母字符
  • .*其他

您可以在操作here中看到它,在这里我围绕您的3个特定条件添加了捕获组。