Javascript csv编号从1到4096的正则表达式

Javascript csv编号从1到4096的正则表达式,javascript,regex,Javascript,Regex,我需要一个正则表达式,它可以匹配由逗号分隔的从1到4096的数字字符串。 我有一个regix可以检查数字1-1000,但不知道如何更改它来检查数字是否小于4096 这将允许逗号后出现空格: ^([1-9][0-9]{0,2}| 1000)(,\s*([1-9][0-9]{0,2}| 1000))*$我认为这对正则表达式来说不是问题。 如果你有一个由逗号分隔的数字串,那么把它们转换成一个数组,像数字一样过滤它们,而不是用正则表达式 var nums=“1,4,790040974095”; var

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

这将允许逗号后出现空格:


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

我认为这对正则表达式来说不是问题。 如果你有一个由逗号分隔的数字串,那么把它们转换成一个数组,像数字一样过滤它们,而不是用正则表达式

var nums=“1,4,790040974095”;
var result=nums.split(“,”).filter(函数(v){
返回v<4096;
});

控制台日志(结果)我不认为这是正则表达式的问题。 如果你有一个由逗号分隔的数字串,那么把它们转换成一个数组,像数字一样过滤它们,而不是用正则表达式

var nums=“1,4,790040974095”;
var result=nums.split(“,”).filter(函数(v){
返回v<4096;
});

控制台日志(结果)使用正则表达式只会使它变得更复杂,您可以使用以下方法:

 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;
 }
函数匹配str(ch){
var str=ch.split(,“”;//将字符串拆分为数组
对于(var i=0;i 4096 | | parseInt(str[i])<0)//如果整数大于4096
返回false;
}
返回true;
}

使用正则表达式只会使它变得更复杂,您可以使用以下方法:

 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;
 }
函数匹配str(ch){
var str=ch.split(,“”;//将字符串拆分为数组
对于(var i=0;i 4096 | | parseInt(str[i])<0)//如果整数大于4096
返回false;
}
返回true;
}

试试这个

^(([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]))*)$

修复?

试试这个

^(([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]))*)$

修正了吗?

1-1000中的任何一个不是小于4096吗?是的,但此regix也不接受高于1000的任何内容。它将不接受小于4096的1001或2202以及有效值。您能给我们一个有效和无效输入的示例,以便我们可以帮助您吗?有什么原因您不能作为整数计算吗?数字是否已填充?e、 g.零填充
0001,0002
或空格填充'1,2'是否有任何1-1000小于4096?是的,但此区域也不接受任何大于1000的内容。它将不接受小于4096的1001或2202以及有效值。您能给我们一个有效和无效输入的示例,以便我们可以帮助您吗?有什么原因您不能作为整数计算吗?数字是否已填充?e、 g.零填充
00010002
或空格填充'1,2',我有理由使用正则表达式。其中一个原因是,输入字段输入可以很好地与regex配合使用,而不是为其编写代码。使用pattern属性检查输入的内容是否只有数字和逗号,然后使用此代码检查其有效性。我有理由使用regex。其中一个原因是,输入字段输入可以很好地与regex配合使用,而不是为其编写代码。使用pattern属性检查输入的内容是否只有数字和逗号,然后使用此代码检查其有效性。只是为了好玩(因为我非常同意其他人的观点,正则表达式是为其他目的而设计的)我也构建了它:
^((?:\b(?:\d|[1-9]\d|[1-9]\d|[1-9]\d|[1-9]\d\d|[1-3]\d\d\d|40[0-8][0-9]| 409[0-5])+)$
当然,d可以用[0-9]@zolo替换,我同意。有趣的regexp难题,但我会在现实生活中使用代码,而不是regexp。我发现它很有趣。只是为了好玩(因为我同意其他人的观点,正则表达式是为其他目的而设计的)我也构建了它:
^((?:\b(?:\d|[1-9]\d|[1-9]\d|[1-9]\d\d|[1-3]\d\d\d|40[0-8][0-9]| 409[0-5,)+)$
当然,d可以用[0-9]@zolo代替。有趣的regexp难题,但我会在现实生活中使用代码,而不是regexp。我很高兴弄明白了。