【发布时间】:2019-06-17 07:01:17
【问题描述】:
我必须生成具有以下条件的正则表达式
- “/”前后最多 3 个数字字符 最多 7 个字符
- 包括“/”,不允许使用其他特殊字符和小数
- “/”前的数字应大于“/”后的数字
到目前为止我已经尝试过了
^\d{3}(\/\d{3})?$
我将如何解决正则表达式““/”之前的数字应该大于“/”之后的数字?
谁能帮帮我?
【问题讨论】:
标签: javascript regex regex-group
我必须生成具有以下条件的正则表达式
到目前为止我已经尝试过了
^\d{3}(\/\d{3})?$
我将如何解决正则表达式““/”之前的数字应该大于“/”之后的数字?
谁能帮帮我?
【问题讨论】:
标签: javascript regex regex-group
您将无法单独使用正则表达式来实现这一点(至少,不那么容易或可读) - 相反,捕获两个数字部分,并检查第一个数字是否大于第二个数字:
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')
);
【讨论】:
您可以分配两个变量 - 一个用于“/”之前的数字,一个用于之后的数字。 像 A/B 一样,然后使用 split() 函数以 '-' 作为分隔符,然后将两部分与 > 进行比较。
据我所知,Regex 中无法比较数值。
【讨论】: