csv数字的正则表达式,从1到4096

时间:2016-02-18 20:10:04

标签: javascript regex

我需要一个可以匹配1到4096之间用逗号分隔的数字字符串的正则表达式。 我有一个regix,检查号码1-1000但不知道如何更改它以检查数字是否小于4096

这将允许逗号后的空格:

^([1-9] [0-9] {0,2} | 1000)(\ S *([1-9] [0-9] {0,2} | 1000))* $

3 个答案:

答案 0 :(得分:3)

我不认为这是正则表达式的问题。 如果您有一串用逗号分隔的数字,那么将它们转换为数组并过滤它们,而不是用正则表达式来打扰它。



var nums = "1,4,7,900,4097,4095";
var result = nums.split(",").filter(function(v){
  return v < 4096;
});
console.log(result);
&#13;
&#13;
&#13;

如果您无法验证输入文字,那么您可以动态过滤掉非数字...

&#13;
&#13;
var nums = "1,4,7,900,4097,'bob',4095";
var result = nums.split(",").filter(function(v){
  var testVal = parseInt(v);
  return testVal != NaN && testVal < 4096;
});
console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

试试这个

^(([1-9][0-9]{0,2}|[1-3][0-9][0-9][0-9]|40([0-8][0-9]|9[0-6]))(,\s*[1-9][0-9]{0,2}|[1-3][0-9][0-9][0-9]|40([0-8][0-9]|9[0-6]))*)$

固定?

答案 2 :(得分:1)

使用正则表达式只会让你变得更复杂,你可以使用它:

 function matchStr(ch){

     var str = ch.split(",");  //Split the string to an array
     for(var i=0;i<str.length;i++){  //Go through the integers

        if(parseInt(str[i]) > 4096 || parseInt(str[i]) < 0) //If the integer is bigger that 4096
           return false;

     }

     return true;
 }