RegExp

2017-09-26 51 views
0

中字符类的范围出错我试图验证使用表达式^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$的电子邮件输入字段,但它会抛出错误Range out of order in character class at RegExp。如何验证使用表达RegExp

ngOnInit() { 
    // created FormGroup using FormBuilder 
    this.courseForm = this.fb.group({ 
     username: [null, [Validators.required, Validators.pattern('^[a-z0-9_-]{3,16}$')]], 
     email: [null, [Validators.required, Validators.pattern('^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$')]], 
     address: (null), 
     select: (null) 
    }); 

回答

1

的错误是由于单个\被删除,你的性格类的部分看起来像[_-.]。这是一个无效的范围。

该模式必须被写为

'^([a-zA-Z0-9_.-]+)@([a-zA-Z0-9_.-]+)\\.([a-zA-Z]{2,5})$' 

即:

  • 双逃脱\符号
  • 移动-到字符类的末尾,以避免必须转义
  • 注意:您也可以省略^$,因为模式为wr自动应对^$
+0

为什么你必须这样做。我可以在哪里了解更多信息 – SONGSTER

1

使用的格局就是这样,

Validators.pattern(/^[a-z0-9_-]{3,16}$/) // wrapping the pattern within '/' and '/' (treating as RegExps) instead of treating it as strings