Angular2 电子邮件验证
Angular2 email validation
我刚开始学习 Angular2,我想制作一个验证表单,在 RegEx 模式之后验证电子邮件。
我的代码看起来像这样,但我不知道我是否做对了,或者我做错了什么,有人可以帮我一下吗?
谢谢!
我修好了。非常感谢大家。
<div class="alert-email">
<label for="contactemail">EMAIL: </label>
<input type="email" id="contactemail" name="contactemail"
required ng-pattern="/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/"
[(ngModel)]="model.contactemail" #contactemail="ngModel"
placeholder="Your email" /><br><br>
<div *ngIf="contactemail.errors && (contactemail.dirty || contactemail.touched)" class="alert-email alert-danger-email"><br>
<div [hidden]="!contactname.errors.required">
Email is required
</div>
<div [hidden]="!contactname.errors">
Please input a valid email.
</div>
</div>
</div>
试试这样的东西
<div class="alert-email">
<label>Email</label>
<input
id="contactemail"
type="text"
#contactemail="ngModel"
[(ngModel)]="model.contactemail"
required
pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">
<div class="md-errors-spacer" [hidden]="contactemail.valid || contactemail.untouched">
<div *ngIf="contactemail.errors && contactemail.errors.required">
Email is required
</div>
<div *ngIf="contactemail.errors && contactemail.errors.pattern">
Email is invalid
</div>
</div>
</div>
Angular 4 有一个内置的 "email" 验证标签,可以在输入中添加。例如:
<input type="email" id="contactemail" email>
这将适用于一系列数字和字母,然后是 @,然后是另一系列字母。它不会考虑 @ 之后的点 - 因为您可以在输入和标准正则表达式中使用 "pattern" 标记。
Angular 4 电子邮件验证:
- 使用电子邮件输入
- 如果您希望 .com 用于电子邮件,请使用模式 pattern="[a-zA-Z0-9.-_]{1,}@[ a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
决赛:
`<input type="email" [(ngModel)]="enterEmail" name="myEmail" #myEmail="ngModel" email pattern="[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}" required>`
对于单个字段中的多个电子邮件验证,您可以使用自定义电子邮件验证器。
import { FormControl } from '@angular/forms';
export class EmailValidator {
public static isValid(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
static isMultiValid(control: FormControl): any {
console.log(control.value);
let tempEmail = control.value;
let invalid = false;
let regex =/[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
if(tempEmail.indexOf(',') > -1){
var emails = control.value.split(',');
for (let email of emails) {
console.log(email);
let isValid = EmailValidator.isValid(email)
if(!isValid){
return{"email not valid":isValid}
}
}
return null;
}
else{
let email = control.value.split(',');
if( email == "" || ! regex.test(email)){
invalid = true;
return {
"email not valid": invalid
};
}
console.log("valid");
return null;
}
}
}
.
您可以将此模式用于您的电子邮件输入:
^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$
除 "sample@domain.dom" 外,此模式还接受 "sample@domain"。
使用此电子邮件模式 "sample@domain." 是不可接受的,并且不允许使用 1 个字母的域 tld("sample@domain.s" 出错)。
这个 pattern
对我有用:
pattern="[a-zA-Z0-9.-]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{3,}"
试试这个,它会起作用:
^[a-zA-Z]+([.-]?[a-zA-Z0-9]+)*@([a-zA-Z]+([.-]?[a-zA-Z]))[.]{1}[a-zA-Z]{2,}$
这种模式对我有用,它可以接受字母数字字符和“.”。特殊字符。
^[\w]+(?:\.[\w])*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}$
此模式电子邮件有效:
<input pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">
试试这个:
^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$
我刚开始学习 Angular2,我想制作一个验证表单,在 RegEx 模式之后验证电子邮件。
我的代码看起来像这样,但我不知道我是否做对了,或者我做错了什么,有人可以帮我一下吗?
谢谢!
我修好了。非常感谢大家。
<div class="alert-email">
<label for="contactemail">EMAIL: </label>
<input type="email" id="contactemail" name="contactemail"
required ng-pattern="/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/"
[(ngModel)]="model.contactemail" #contactemail="ngModel"
placeholder="Your email" /><br><br>
<div *ngIf="contactemail.errors && (contactemail.dirty || contactemail.touched)" class="alert-email alert-danger-email"><br>
<div [hidden]="!contactname.errors.required">
Email is required
</div>
<div [hidden]="!contactname.errors">
Please input a valid email.
</div>
</div>
</div>
试试这样的东西
<div class="alert-email">
<label>Email</label>
<input
id="contactemail"
type="text"
#contactemail="ngModel"
[(ngModel)]="model.contactemail"
required
pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">
<div class="md-errors-spacer" [hidden]="contactemail.valid || contactemail.untouched">
<div *ngIf="contactemail.errors && contactemail.errors.required">
Email is required
</div>
<div *ngIf="contactemail.errors && contactemail.errors.pattern">
Email is invalid
</div>
</div>
</div>
Angular 4 有一个内置的 "email" 验证标签,可以在输入中添加。例如:
<input type="email" id="contactemail" email>
这将适用于一系列数字和字母,然后是 @,然后是另一系列字母。它不会考虑 @ 之后的点 - 因为您可以在输入和标准正则表达式中使用 "pattern" 标记。
Angular 4 电子邮件验证:
- 使用电子邮件输入
- 如果您希望 .com 用于电子邮件,请使用模式 pattern="[a-zA-Z0-9.-_]{1,}@[ a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}
决赛:
`<input type="email" [(ngModel)]="enterEmail" name="myEmail" #myEmail="ngModel" email pattern="[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}" required>`
对于单个字段中的多个电子邮件验证,您可以使用自定义电子邮件验证器。
import { FormControl } from '@angular/forms';
export class EmailValidator {
public static isValid(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
static isMultiValid(control: FormControl): any {
console.log(control.value);
let tempEmail = control.value;
let invalid = false;
let regex =/[a-z0-9!#$%&'*+=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
if(tempEmail.indexOf(',') > -1){
var emails = control.value.split(',');
for (let email of emails) {
console.log(email);
let isValid = EmailValidator.isValid(email)
if(!isValid){
return{"email not valid":isValid}
}
}
return null;
}
else{
let email = control.value.split(',');
if( email == "" || ! regex.test(email)){
invalid = true;
return {
"email not valid": invalid
};
}
console.log("valid");
return null;
}
}
}
.
您可以将此模式用于您的电子邮件输入:
^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$
除 "sample@domain.dom" 外,此模式还接受 "sample@domain"。 使用此电子邮件模式 "sample@domain." 是不可接受的,并且不允许使用 1 个字母的域 tld("sample@domain.s" 出错)。
这个 pattern
对我有用:
pattern="[a-zA-Z0-9.-]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{3,}"
试试这个,它会起作用:
^[a-zA-Z]+([.-]?[a-zA-Z0-9]+)*@([a-zA-Z]+([.-]?[a-zA-Z]))[.]{1}[a-zA-Z]{2,}$
这种模式对我有用,它可以接受字母数字字符和“.”。特殊字符。
^[\w]+(?:\.[\w])*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}$
此模式电子邮件有效:
<input pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">
试试这个:
^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$