angular - 在 Angular Typescript 中将正则表达式验证器与 Or 运算符结合使用
问题描述
如何添加更多正则表达式验证器作为或组合选项?例如,创建以下正则表达式,允许客户输入带连字符的电话号码
export const PhoneNumberValidator = Validators.pattern(/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$/);
555-555-5555(带连字符)
现在业务部门允许客户输入不带任何连字符的电话号码,因此他们可以使用连字符或不使用连字符。这需要添加。如何使用存储的验证器和反应式表单构建器来完成?
(/^[0][1-9]\d{9}$|^[1-9]\d{9}$/)
-
this.customerForm = this.formBuilder.group({
'phoneNumber': [null, [Validators.maxLength(50), PhoneNumberValidator]],
解决方案
您可以使用这两个正则表达式创建自定义验证器。现在两种类型的电话号码都将被允许。
export const PhoneNumberValidator = (control: AbstractControl): { [key: string]: any } | null => {
if (!/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$/.test(control.value)
&&
!/^[0][1-9]\d{9}$|^[1-9]\d{9}$/.test(control.value)) {
return { 'NOT_VALID': 'Not valid phone number' };
}
}
或|
在两个正则表达式之间使用
export const PhoneNumberValidator = Validators.pattern(/^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$|^[0][1-9]\d{9}$|^[1-9]\d{9}$/);
推荐阅读
- dynamics-nav - 我们如何在 NAV 2016 中使用 C/AL 执行 CRUD 和 Join 操作?
- python - 我不能在生成器中使用其他人的模型来生成我的输入。我该如何解决?
- python - 比较来自多个数据帧的数据帧以过滤数据并提取相关特征
- sql-server - 更改 sql server 表问题
- c++ - 我不明白如何使用嵌套循环计算每个可能子数组的总和
- javascript - 无法理解 .reduce 在 JavaScript 中的工作原理
- java - 我们已经在 selenium 的 Chrome 中设置了下载目录。但是下载控制默认会自动下载到下载文件夹
- jquery - 当我选择选项时,我需要选择的值和 id 来显示从任何行
- azure - 将用户名从 ADF 传递到笔记本
- slurm - SLURM QOS 抢占