regex - RegExp 字符类中的范围乱序

标签 regex angular angular2-forms

我正在尝试验证使用表达式 ^([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)
    });

最佳答案

该错误是由于删除了单个 \ 而您的字符类的一部分看起来像 [_-.]。这是一个无效的范围。

模式必须写成

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

即:

  • 双重转义\符号
  • - 移动到字符类的末尾以避免必须对其进行转义
  • 注意:您也可以省略 ^$,因为模式会自动用 ^$ 包装.

关于regex - RegExp 字符类中的范围乱序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46428833/

相关文章:

html - Angular:在日期字段的输入类型文本中添加斜杠 "/"

javascript - 子窗体脏时从父组件访问子组件

python - 除非字符串在python中用引号引起来,否则如何将字符串拆分为字符串?

JavaScript 正则表达式模式

php - 从 MySQL 数据库的序列化数组中的字符串中删除 "%"

javascript - 在 Angular 7 的 ngFor 中有条件地禁用按钮

angular - 在需要表达式的地方得到了插值 ({{}})

python - 如何仅捕获析取的匹配侧?

angular - 从嵌套组件使用 RouterLink

css - 我们如何在 Angular 中为 *ngIf 添加过渡效果?