import { Validators, ValidatorFn, AbstractControl, ValidationErrors } from '@angular/forms'; function isEmptyInputValue(value: any): boolean { return value == null || value.length === 0; } /** * 验证器 * * @export * @class NaValidators * @extends {Validators} */ export class NaValidators extends Validators { static password(c: string | AbstractControl): ValidatorFn { const vf = function(control: AbstractControl): ValidationErrors | null { const password: string = control.value; if (isEmptyInputValue(password)) { return null; } if (password.match('^(?!([a-zA-Z]+|\\d+|[#@!~%^&*]+)$)[a-zA-Z\\d#@!~%^&*]{8,20}$')) { return null; } return { 'password': { 'errorMsg': '密码为8-20位数字及字母组合' } }; }; return vf; } }