首页 > 解决方案 > Angular 验证器模式正则表达式,用于匹配一个或另一个规则,但不能同时匹配两者

问题描述

我正在尝试将用户范围与这样的角度验证器匹配:

在此处输入图像描述

这个想法是将两个范围选项之一与角度模式验证器匹配:

1-991,2,5,6,8但不是两者(1-99,101,105,110)兼而有之(1,3,5,6,7-15)

this.form = this.fb.group({
      loads: ['', [Validators.required, Validators.pattern(/^\d+-\d+|\d+(?:,\d+)*$/)]],
      notes: ['', Validators.required]
    });

我尝试了一些解决方案,最接近的是这个,但它与它们都匹配。

标签: regexangular

解决方案


最后我找到了一个可行的解决方案:

Validators.pattern(/^\d+-\d+$|^\d+(?:,\d+)*$/)

我需要在 OR 的每个选项中开始和结束断言:

1,2,3,4,5-99       // not match
1-99,1,23,3,4,5    // not match
1-99               // matches
1,2,3,4,5          // matches

推荐阅读