20 lines
813 B
TypeScript
20 lines
813 B
TypeScript
|
import { ValidatorFn, FormGroup, ValidationErrors } from '@angular/forms';
|
||
|
|
||
|
/**
|
||
|
* Constant to validate a `duration` field.
|
||
|
*
|
||
|
* `([0-9]+)` looks for a number with any length to the `:` (optional).\n
|
||
|
*
|
||
|
* `([0-5][0-9]?)?`: The user can optionally enter a number for minutes/seconds (0 - 59)
|
||
|
*
|
||
|
* Afterwards the duration can be specified as hours or minutes (via `[h|m]?` - optional). Defaults to `h`.
|
||
|
*
|
||
|
* @param control The form-control to validate
|
||
|
*
|
||
|
* @returns {ValidationErrors | null} Null, if the input is correct, `ValidationErrors` otherwise.
|
||
|
*/
|
||
|
export const durationValidator: ValidatorFn = (control: FormGroup): ValidationErrors | null => {
|
||
|
const regExp = /^\s*([0-9]+)(:)?([0-5][0-9]?)?\s*[h|m]?$/g;
|
||
|
return regExp.test(control.value) || control.value === '' ? null : { valid: false };
|
||
|
};
|