我如何让这个自定义验证器工作?
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 个特定条件添加了捕获组。
自定义验证器模式有问题。成功验证的基本要素应该是 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 个特定条件添加了捕获组。