【问题标题】:How to generate a regex with Max of 3 numeric chars before & after the "/" where Numbers before the "/" should be greater than numbers after the "/"如何在“/”之前和之后生成最多 3 个数字字符的正则表达式,其中“/”之前的数字应该大于“/”之后的数字
【发布时间】:2019-06-17 07:01:17
【问题描述】:

我必须生成具有以下条件的正则表达式

  • “/”前后最多 3 个数字字符 最多 7 个字符
  • 包括“/”,不允许使用其他特殊字符和小数
  • “/”前的数字应大于“/”后的数字

到目前为止我已经尝试过了

^\d{3}(\/\d{3})?$

我将如何解决正则表达式““/”之前的数字应该大于“/”之后的数字?

谁能帮帮我?

【问题讨论】:

    标签: javascript regex regex-group


    【解决方案1】:

    您将无法单独使用正则表达式来实现这一点(至少,不那么容易或可读) - 相反,捕获两个数字部分,并检查第一个数字是否大于第二个数字:

    const check = str => {
      const match = str.match(/^(\d{1,3})\/(\d{1,3})$/);
      if (!match) {
        return false;
      }
      const [, d1, d2] = match;
      return Number(d1) > Number(d2);
    };
    
    console.log(
      check('123/456'),
      check('456/123'),
      check('45/123'),
      check('12/45')
    );

    【讨论】:

      【解决方案2】:

      您可以分配两个变量 - 一个用于“/”之前的数字,一个用于之后的数字。 像 A/B 一样,然后使用 split() 函数以 '-' 作为分隔符,然后将两部分与 > 进行比较。

      据我所知,Regex 中无法比较数值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 2022-11-20
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        相关资源
        最近更新 更多