Angular 以 HHH:MM 格式输入的小时数的自定义验证器
Angular custom validator for hours input in HHH:MM format
我需要以小时和分钟为单位验证输入,但它是 HHH:MM 中 6 个字符的奇怪格式。
例如 30hrs and 15 mins 需要在输入中输入 030:15
下面是我创建自定义验证器的尝试,但我需要一些帮助来让正则表达式比较输入的小时数介于 0-70 和分钟之间的 00-59。
import { AbstractControl, ValidatorFn, FormControl } from '@angular/forms';
export class RegexConstants {
public static DECIMAL_6_4 = /^[0-9:-]{6}$/;
}
export function hoursClaimedValidator(input: string,reg: RegexConstants){
return (control: AbstractControl):{[key: string]: boolean} | null => {
if( control.value !==null && (isNaN(control.value) || control.value.toString().match(reg)))
{
return {'hoursClaimed': true}
}
return null;
};
}
所以,如果您需要一个正则表达式来处理您需要的输入,您可以试试这个:
hhhmm = new RegExp(/^0([0-6][0-9]|70):[0-5][0-9]$/);
第一个插入符号强制用户以 0 开头。然后你创建一个 或 语句,让用户在 00 到 69 组合或 70 之间选择。在此之后,需要一个冒号 (:)。最后,字符串必须以 00 到 59 之间的数字结尾。
我需要以小时和分钟为单位验证输入,但它是 HHH:MM 中 6 个字符的奇怪格式。 例如 30hrs and 15 mins 需要在输入中输入 030:15
下面是我创建自定义验证器的尝试,但我需要一些帮助来让正则表达式比较输入的小时数介于 0-70 和分钟之间的 00-59。
import { AbstractControl, ValidatorFn, FormControl } from '@angular/forms';
export class RegexConstants {
public static DECIMAL_6_4 = /^[0-9:-]{6}$/;
}
export function hoursClaimedValidator(input: string,reg: RegexConstants){
return (control: AbstractControl):{[key: string]: boolean} | null => {
if( control.value !==null && (isNaN(control.value) || control.value.toString().match(reg)))
{
return {'hoursClaimed': true}
}
return null;
};
}
所以,如果您需要一个正则表达式来处理您需要的输入,您可以试试这个:
hhhmm = new RegExp(/^0([0-6][0-9]|70):[0-5][0-9]$/);
第一个插入符号强制用户以 0 开头。然后你创建一个 或 语句,让用户在 00 到 69 组合或 70 之间选择。在此之后,需要一个冒号 (:)。最后,字符串必须以 00 到 59 之间的数字结尾。