Angular 形成精确的 10 个字母数字字母模式验证
Angular Form exact 10 alphanumeric letters pattern validation
我在反应式表单字段验证的这个特定用例中遇到以下问题。
目前我只设置了这条规则:
this.projectForm = this.fb.group({
.....................................................................................,
.....................................................................................,
.....................................................................................,
CIG: [null, [Validators.required, Validators.minLength(10),Validators.maxLength(10)]],
目前我正在检查插入到我的 CIG 表单字段中的值是否恰好有 10 个字符作为长度。
我的问题是我还必须检查这是一个字母数字字符串(正好由 10 个字符组成)。
所以这样的事情是允许的:ABCED12345 但是这样的事情是不允许的:ABCD-12345
如何使用 验证器 实现此行为?我需要使用 REGEX 或类似的东西吗?
您可以使用 Angular 反应形式 Pattern Validators 来实现这一点。
validPattern = "^[a-zA-Z0-9]{10}$"; // alphanumeric exact 10 letters
this.projectForm = this.fb.group({
...
CIG: [null, [Validators.required, Validators.pattern(this.validPattern)],
希望这能解决您的问题。
如果您想更好地控制错误消息,您也可以创建自己的自定义验证器函数,并将其添加到您的验证器数组中。
这样的函数可以是这样的:
import { FormControl, ValidationErrors } from '@angular/forms';
const ALPHA_NUMERIC_REGEX = /^[a-zA-Z0-9_]*$/;
const ALPHA_NUMERIC_VALIDATION_ERROR = { alphaNumericError: 'only alpha numeric values are allowed' }
function alphaNumericValidator(control: FormControl): ValidationErrors | null {
return ALPHA_NUMERIC_REGEX.test(control.value) ? null : ALPHA_NUMERIC_VALIDATION_ERROR;
}
并将其添加到您的验证器列表中,如下所示:
像这样:
[Validators.required, Validators.minLength(10),Validators.maxLength(10), alphaNumericValidator]
有关 angular 自定义验证器的更多信息:
custom validators
我在反应式表单字段验证的这个特定用例中遇到以下问题。
目前我只设置了这条规则:
this.projectForm = this.fb.group({
.....................................................................................,
.....................................................................................,
.....................................................................................,
CIG: [null, [Validators.required, Validators.minLength(10),Validators.maxLength(10)]],
目前我正在检查插入到我的 CIG 表单字段中的值是否恰好有 10 个字符作为长度。
我的问题是我还必须检查这是一个字母数字字符串(正好由 10 个字符组成)。
所以这样的事情是允许的:ABCED12345 但是这样的事情是不允许的:ABCD-12345
如何使用 验证器 实现此行为?我需要使用 REGEX 或类似的东西吗?
您可以使用 Angular 反应形式 Pattern Validators 来实现这一点。
validPattern = "^[a-zA-Z0-9]{10}$"; // alphanumeric exact 10 letters
this.projectForm = this.fb.group({
...
CIG: [null, [Validators.required, Validators.pattern(this.validPattern)],
希望这能解决您的问题。
如果您想更好地控制错误消息,您也可以创建自己的自定义验证器函数,并将其添加到您的验证器数组中。 这样的函数可以是这样的:
import { FormControl, ValidationErrors } from '@angular/forms';
const ALPHA_NUMERIC_REGEX = /^[a-zA-Z0-9_]*$/;
const ALPHA_NUMERIC_VALIDATION_ERROR = { alphaNumericError: 'only alpha numeric values are allowed' }
function alphaNumericValidator(control: FormControl): ValidationErrors | null {
return ALPHA_NUMERIC_REGEX.test(control.value) ? null : ALPHA_NUMERIC_VALIDATION_ERROR;
}
并将其添加到您的验证器列表中,如下所示: 像这样:
[Validators.required, Validators.minLength(10),Validators.maxLength(10), alphaNumericValidator]
有关 angular 自定义验证器的更多信息: custom validators