我需要一个可以匹配1到4096之间用逗号分隔的数字字符串的正则表达式。 我有一个regix,检查号码1-1000但不知道如何更改它以检查数字是否小于4096
这将允许逗号后的空格:
^([1-9] [0-9] {0,2} | 1000)(\ S *([1-9] [0-9] {0,2} | 1000))* $
答案 0 :(得分:3)
我不认为这是正则表达式的问题。 如果您有一串用逗号分隔的数字,那么将它们转换为数组并过滤它们,而不是用正则表达式来打扰它。
var nums = "1,4,7,900,4097,4095";
var result = nums.split(",").filter(function(v){
return v < 4096;
});
console.log(result);
&#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;
答案 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;
}