我如何让这个自定义验证器工作?

How do I get this custom validator to work?

自定义验证器模式有问题。成功验证的基本要素应该是 1) 开头至少有 1 个数字 2) number/numbers 之后有一个 space 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 之后,输入的所有其他字符(无论它是什么)都会使其验证失败,直到输入后续字符,然后在输入下一个字符时再次失败。它只是在我添加字符时在无效和有效之间来回切换。

我做错了什么?

我认为您的正则表达式有点不对劲。这是符合您条件的更简单的表达式:

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

您可以看到它的实际效果 here,我在其中围绕您的 3 个特定条件添加了捕获组。