我是javascript的新手,我正在使用正则表达式来验证值是否在1到20000之间
^(?:[1-9]|(?:[1-9][0-9])|(?:[1-9][0-9][0-9])|(?:[1-9][0-9][0-9][0-9])|(?:[1-9][0-9][0-9][0-9][0-9])|(?:20000))$
这是我试过的表达,但它允许99999为有效
答案 0 :(得分:3)
虽然我怀疑这是最有效的解决方案,但这应该可以解决问题。
/^((1[0-9]{0,4})|([1-9][0-9]{0,3})|20000)$/
请注意,这是字符串匹配,而不是类型转换,因此小数位和零填充之类的内容将不匹配。
for (var i = 0; i < 100000; i++) {
var should = i > 0 && i <= 20000;
if (should !== /^((1[0-9]{0,4})|([1-9][0-9]{0,3})|20000)$/.test('' + i)) {
console.log('FAILED:', i);
}
}
console.log('DONE');
答案 1 :(得分:-1)
您可以使用:
^1?\d{0,4}$
我认为您应该使用数字比较来获得更好的性能。 我希望有所帮助。