Regex用于指定范围内逗号分隔的数字

Regex for comma separated numbers within specific range

本文关键字:分隔 数字 范围内 用于 Regex      更新时间:2023-09-26

我需要regex来验证逗号分隔的数字的最小和最大数字限制。我试过这个正则表达式,但没有成功

^(45|[1-9][0-5]?)$

我想要这样的清单(最小值是1,最大值是45)

23,45,3,7,1,9,34

这不是regex的工作(regex对数字不方便,想象一下,对于更复杂的范围(如24769352),需要构建一个巨大的模式也是如此)。所以我的建议是分开你的绳子,然后逐一检查你的物品。

没有正则表达式的方法:

function numsInRange(s, min, max) {
    var items = s.split(',');
    for (var i in items) {
        var num = parseInt(items[i], 10);
        if (num != items[i] || num < min || num > max)
            return false;
    }
    return true;
}
var s='23,45,3,7,1,9,34';
console.log(numsInRange(s, 1, 45)); // true
console.log(numsInRange(s, 1, 44)); // false

演示

此正则表达式将完成以下工作:

'b(([1-3][0-9])|(4[0-5])|[1-9])'b

我很想使用regex(取决于需要)和数组迭代器(不是for..in枚举)(示例中为ES5)的组合

var reIsPattern = /^[+'-]?(?:0|[1-9]'d*)$/;
function areNumsInRange(commaString, min, max) {
  return commaString.split(',')
    .map(Function.prototype.call, String.prototype.trim)
    .every(function(item) {
      return reIsPattern.test(item) && item >= min && item <= max
    });
}
var s = '23,45,3,7,1,9,34';
document.body.textContent = areNumsInRange(s, 1, 45);

或者可能只是

function areNumsInRange(commaString, min, max) {
  return commaString.split(',').every(function(item) {
    var num = Number(item);
    return num >= min && num <= max;
  });
}
var s = '23,45,3,7,1,9,34';
document.body.textContent = areNumsInRange(s, 1, 45);

相关文章: