使用正则表达式从列表中获取范围

时间:2014-01-24 13:29:40

标签: javascript regex

我有一个数字列表,例如

var list = ["123","12345678","123","234,2345","2.34567","123.12345","-123","-0.1234","-324215.45"];

此列表可以包含带有可选十进制值的负数正数,也可以是负数或正数。

我需要使用正则表达式来做三件事:

  1. getAllNumbersBeforeValue(值);
  2. getAllNumbersAfterValue(值);
  3. getRangeBetweenValues(valueFrom,valueTo);
  4. 传入的值未知,可以是任何数字。

    更新1:

    我有这个,这不是很完美,但适用于某些数字:

    var a = function(rand) {
        var val = "";
    
        var numArr = rand.split("");
        for(var i = 0; i < numArr.length; i++) {
            val = val + (Number(numArr[i])+1);
        }
        return "^[^" + val.split("").join("-9][^") + "-9]$"
    }; // outputs "^[^2-9][^3-9][^4-9][^5-9][^6-9]$" with rand "12345"
    

    我试图从给定值以编程方式生成正则表达式 例如,“123456”是一个随机数(rand),我希望能够使用正则表达式值过滤高于rand(或低于rand)的值的数字数组。

    由于

1 个答案:

答案 0 :(得分:1)

您可以使用underscore.js(http://underscorejs.org)来过滤结果。例如......

var list = ["123","12345678","123","234,2345","2.34567","123.12345","-123","-0.1234","-324215.45"];

function getAllNumbersBeforeValue(list, value) {
    return _.filter(list, function(num) { 
        return num < value; 
    });
}

这是一个不使用框架的例子......

function getAllNumbersBeforeValue(list, value) {
    var output = [];
    for(var i = 0; i < list.length; i++) {
        if(list[i] < value) {
            output.push(list[i]);
        }
    }
    return output;
}



getAllNumbersBeforeValue(list, 123);