我正在尝试使用 Angular 模式验证器来验证密码、邮政编码和电话号码。
出于某种原因,无论我尝试哪种正则表达式,密码和邮政编码验证似乎都不起作用。电话号码正则表达式工作得很好,这让我更加困惑。我不确定错误在哪里,因为即使是简单的正则表达式模式似乎也不起作用,这意味着错误在表单生成器中。但是,似乎我所做的与电话号码正则表达式没有什么不同。
提前致谢!
使用的正则表达式:
// Regex to check for valid phone number
phoneRegex = "^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$";
// Minimum eight characters, at least one letter, one number and one special character:
passRegex = "^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$";
// Postalcode regex (intended effect: 4 numbers, followed by two letters)
PostalRegex = "^\d{4}[a-zA-Z]{2}";
Formbuilder(简化为仅包含相关的表单控件):
this.userForm = this.fb.group({
phoneNumber: ['', {updateOn: 'blur', validators: [Validators.required, Validators.minLength(8), Validators.maxLength(12), Validators.pattern(this.phoneRegex)]}],
password: ['', {updateOn: 'blur', validators: [Validators.required, Validators.minLength(8), Validators.maxLength(32), Validators.pattern(this.passRegex)]}],
passwordConf: ['', {updateOn: 'blur', validators: Validators.required}],
postalCode: ['', {updateOn: 'blur', validators: [Validators.required, Validators.pattern(this.PostalRegex)]}],
}, { updateOn: 'submit', validators: this.checkPassMatch.bind(this) } as AbstractControlOptions);
}