【发布时间】:2021-12-23 17:15:30
【问题描述】:
个人电子邮件 ID 仅接受 gmail 和 yahoo 域 企业邮箱 ID 不接受 gmail 和 yahoo 域
个人电子邮件 ID 正则表达式验证有效,而企业电子邮件 ID 正则表达式验证无效。
如何修复企业电子邮件 ID 正则表达式验证?
请查看 stackblitz 示例
HTML
<form [formGroup]="registerProfileForm" novalidate>
<span><b>Indiviual Email Id accept only the gmail and yahoo domain</b></span>
<div>
<label for="vendorEmailId">Indiviual Email Id<span class="required-field">*</span></label>
<input class="form-control" maxlength="100" formControlName="indiviualEmailId" type="email">
</div>
<span class="text-danger"
*ngIf="registerProfileForm.controls?.indiviualEmailId?.hasError('pattern')">
Please enter a valid email domain name
</span>
<br />
<br />
<br />
<br />
<br />
<span><b>Business Email Id not accept the gmail and yahoo domain</b></span>
<div>
<label for="vendorEmailId">Business Email Id<span class="required-field">*</span></label>
<input class="form-control" maxlength="100" formControlName="businessEmailId" type="email">
</div>
<span class="text-danger"
*ngIf="registerProfileForm.controls?.businessEmailId?.hasError('pattern')">
Please enter a valid email domain name
</span>
</form>
ts
import { Component, VERSION } from '@angular/core';
import { FormBuilder, FormGroup, Validators, FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular ' + VERSION.major;
registerProfileForm: FormGroup;
emailValidatorBusiness = /^[-!#$%&'*+\/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(!gmail|!yahoo)\.[a-zA-Z](-?[a-zA-Z0-9])+$/;
emailValidatorIndiviual = /^[-!#$%&'*+\/0-9=?A-Z^_a-z{|}~](\.?[-!#$%&'*+\/0-9=?A-Z^_a-z`{|}~])*@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(gmail|yahoo)\.[a-zA-Z](-?[a-zA-Z0-9])+$/;
constructor(
private formBuilder: FormBuilder){
this.registerProfileForm = this.formBuilder.group({
indiviualEmailId: new FormControl('',[Validators.required,Validators.pattern(this.emailValidatorIndiviual)]),
businessEmailId: new FormControl('',[Validators.required,Validators.pattern(this.emailValidatorBusiness)])
})
}
}
演示:https://stackblitz.com/edit/angular-ivy-3sbonz?file=src/app/app.component.ts
【问题讨论】:
-
您是否单独测试了正则表达式,例如在regex-planet?失败的测试用例是什么?