如何在“ /”之前和之后最多生成3个数字字符的正则表达式,其中“ /”之前的数字应大于“ /”之后的数字

时间:2019-06-17 07:01:17

标签: javascript regex regex-group

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

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

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

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

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

有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

仅靠正则表达式将无法实现这一点(至少不是那么容易或可读)-而是捕获两个数字部分,并检查第一个数字是否大于第二个数字。

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')
);

答案 1 :(得分:0)

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

据我所知,正则表达式中无法比较数字值。