首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular2电子邮件验证

Angular2电子邮件验证
EN

Stack Overflow用户
提问于 2017-02-21 19:56:23
回答 8查看 93.7K关注 0票数 38

我是学习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>

EN

回答 8

Stack Overflow用户

发布于 2017-05-19 07:40:44

Angular 4有一个内置的"email“验证标签,可以在输入中添加。例如:

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

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

票数 60
EN

Stack Overflow用户

发布于 2018-02-19 12:49:47

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

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
EN

Stack Overflow用户

发布于 2018-11-23 01:30:07

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

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

ref

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42366649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档