gpt4 book ai didi

regex - Angular Reactive Forms 验证日期年份四位数字

转载 作者:行者123 更新时间:2023-12-04 17:38:21 25 4
gpt4 key购买 nike

我使用 Angular Reactive Forms 并且我希望我的日期格式优先有效(在两个现有验证器之前)。我的有效格式是 dd/MM/YYYY( 不是 dd/MM/YY)。我使用 Bootstrap v4 日期选择器。

我的表格:

this.myForm = this.fb.group({
'day': ['', [Validators.required, minDateValidator(this.todayMoment.toDate()), businessDayValidator()]]
});

我的验证器:
export function minDateValidator(minDate: Date): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const invalid = control.value < minDate.setHours(0, 0, 0);
return invalid ? {'minDate': {value: control.value}} : null;
};
}

export function businessDayValidator(): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const invalid = !DateUtilsService.isBusinessDay(moment(control.value));
return invalid ? {'businessDay': {value: control.value}} : null;
};
}

我试着添加这个 Validators.pattern('(2|1)[0-9]{3}-[0-9]{2}-[2-9]{2}.*')
online regex exec可以,但不在 Angular 中(打印此错误):
{ "pattern": { "requiredPattern": "^(2|1)[0-9]{3}-[0-9]{2}-[2-9]{2}.*$", "actualValue": "2019-04-15T10:00:00.000Z" } }

最佳答案

bootstrap datepicker 中的问题是“值是日期而不是字符串”。

this.myForm = this.fb.group({
'day': ['', [Validators.required, formatValidator(), minDateValidator(this.todayMoment.toDate()), businessDayValidator()]]
});

export function formatValidator(): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
const dateRegEx = new RegExp('^(2|1){1}[0-9]{3}.[0-9]{2}.[0-9]{2}.*$');
const dateInput = control.value as Date;
const match = dateInput.toISOString && dateRegEx.test(dateInput.toISOString());
return match ? null : {'formatValidator': {value: control.value} };
};
}

关于regex - Angular Reactive Forms 验证日期年份四位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55627689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com