首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >电子邮件验证Ionic2

电子邮件验证Ionic2
EN

Stack Overflow用户
提问于 2016-10-21 04:52:03
回答 2查看 5.7K关注 0票数 0

我正在用Ionic2构建一个应用程序。在应用程序中,我有一个表单,它使用formBuilder来验证每个输入字段。我想,对于电子邮件输入字段,我将只使用带有正则字符串的Validators.pattern。但是在尝试了多个不同的regex表达式之后,我无法让它工作。表单上说,即使我输入了一个有效的电子邮件地址,如'thisisanemail@gmail.com‘,该字段也是无效的。问题不是regex表达式,而是我对Validator的实现。

这是我的formBuilder:

代码语言:javascript
运行
复制
 this.inputGroup = this.formBuilder.group({
    fullName : ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
    email : ['', Validators.compose([Validators.required, Validators.pattern('/^(([^<>()\[\]\\.,;:\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,}))$/')])],
    subject : ['', Validators.compose([Validators.maxLength(30), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
    message : ['', Validators.compose([Validators.maxLength(500), Validators.pattern('[a-zA-Z ]*'), Validators.required])],
     });

为什么Validator声称是电子邮件,如上面的例子,是无效的?有更好的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-21 05:02:03

您可以扩展验证器接口并创建电子邮件验证器指令,如下所示,这样您也可以在另一种形式中使用相同的指令:

代码语言:javascript
运行
复制
import { Directive, forwardRef, Attribute } from '@angular/core';
import { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';

@Directive({
  selector: '[email-validator][formControlName],[email-validator][ngModel]',
  providers: [{provide: NG_VALIDATORS, useExisting: EmailValidatorDirective, multi: true}]
})

class EmailValidatorDirective implements Validator {
  validate(c: AbstractControl): {[key: string]: any} {
    let regExp = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;

    if (!regExp.test(c.value)) {
      return {"invalidEmail": true};
    }

    return null;
  }
}
票数 3
EN

Stack Overflow用户

发布于 2017-06-13 00:03:46

在没有指令的情况下执行此

审定:

代码语言:javascript
运行
复制
      this.form = this.formBuilder.group(this.createValitation());

      private createValitation() {
        return {
          email: ['', [<any>Validators.required, <any>Validators.pattern(GlobalValidator.EMAIL_REGEX)]]
        };
      }

Regex:

代码语言:javascript
运行
复制
export class GlobalValidator {

  public static EMAIL_REGEX = /^(([^<>()\[\]\\.,;:\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,}))$/;

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

https://stackoverflow.com/questions/40168655

复制
相关文章

相似问题

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