RegExp 字符类中的范围乱序

SON*_*TER 2 regex angular2-forms angular

我试图验证使用表达式提交的电子邮件输入^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$,但它引发了错误 Range out of order in character class at 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)
    });
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

该错误是由于单个角色\被删除并且角色类的一部分看起来像[_-.]。这是一个无效范围。

该模式必须写为

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

那是:

  • 双重转义\符号
  • 移动-到字符类的末尾以避免必须转义它
  • 注意:您也可以省略^and,$因为模式会自动用^and包裹起来$