Angular2电子邮件验证

时间:2017-02-21 11:56:23

标签: angular 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>

10 个答案:

答案 0 :(得分:53)

Angular 4有一个内置的“电子邮件”验证标记,可以在输入中添加。 E.g:

<input type="email" id="contactemail" email>

这对于一系列数字和字母有效,然后是@然后是另一系列字母。它不会考虑@之后的点 - 因为您可以在输入和标准正则表达式中使用“pattern”标记。

答案 1 :(得分:35)

尝试类似的东西

<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>

答案 2 :(得分:23)

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>`

答案 3 :(得分:3)

对于单个字段中的多个电子邮件验证,您可以使用自定义电子邮件验证程序。

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;

   }
  }
}

答案 4 :(得分:1)

您可以将此模式用于电子邮件输入:

^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$

ref

除了“ sample@domain.dom”之外,此模式还接受“ sample @ domain”。 使用此电子邮件模式“ sample @ domain”。是不可接受的,并且不允许使用1个字母的域名tld(“ sample@domain.s”出了错)。

答案 5 :(得分:1)

试试这个:

^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$

答案 6 :(得分:0)

这个pattern为我工作:

 pattern="[a-zA-Z0-9.-]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{3,}"

答案 7 :(得分:0)

尝试此一项将起作用:

^ [a-zA-Z] +([.-]?[a-zA-Z0-9] +)* @([a-zA-Z] +([.-]?[a-zA -Z]))[。] {1} [a-zA-Z] {2,} $

答案 8 :(得分:0)

此模式对我有用,它将接受字母数字字符和“。”特殊字符。

^[\\w]+(?:\\.[\\w])*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$

答案 9 :(得分:0)

此模式的电子邮件有效:

 <input  pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$">