正则表达式 - 检查具有约束的数字范围

时间:2016-08-13 04:24:41

标签: javascript regex

在javascript中我需要解析用户输入。输入格式为:number - number。这可以重复并用逗号分隔。 以下是一些例子:

1-10
4-10,13-17
6-10,3-8,4-12

这是我为此写的正则表达式

(\d+[-]\d+[,]?)

但是,有2个限制。

  1. 第一个数字必须小于第二个数字(4-5有效,但5-4不是)
  2. 每个数字必须介于1和N之间(含)。我将指定N。
  3. 有没有办法可以用正则表达式强制执行这些约束?

1 个答案:

答案 0 :(得分:2)

虽然您当然可以将格式与正则表达式匹配,但您无法使用它们进行所需的验证。我推荐的是这样的(在JS中):

function verifyList(list) {
    var matches = list.match(/\d+-\d+/g);
    for (match in matches) {
        var numbers = match.match(/(\d+)-(\d+)/);
        if (numbers[1] >= numbers[2]) return false;
    }

    return true;
}