2014-01-24 40 views
0

我有一個數字的列表,如使用正則表達式列表獲取範圍

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

這個列表可以有可選的十進制值,也是陰性或陽性陰性,正數。

我需要使用正則表達式做3兩件事:

  1. getAllNumbersBeforeValue(值);
  2. getAllNumbersAfterValue(value);
  3. getRangeBetweenValues(valueFrom,valueTo);

傳入的值未知,可能是任何數字。

更新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),我希望能夠使用regex值過濾高於rand(或低於rand)值的數字數組。

感謝

+7

爲什麼你會使用正則表達式來做到這一點? – MCL

+0

這是一個需求:( – Eugene

+2

你能詳細解釋一下你的問題/需求嗎?我並不完全明白 – MCL

回答

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); 
+0

感謝您的解決方案,但我無法使用任何框架,但dojotoolkit。 – Eugene