如何编写正则表达式匹配1-10和1-5的数字?请帮助这个苦恼的人。
你可以使用 JavaScript 中简单的数字检查来实现这一点:
// Convert input to integer just to be sure
mynum = parseInt(mynum, 10);
// Check number-range
if(mynum >= 1 && mynum <=10)
and
if(mynum >= 1 && mynum <=5)
如果你真的想使用正则表达式:
/^([1-9]|10)$/
and
/^[1-5]$/
更新:
parseInt()
(大写I)应该给出基数参数。parseInt(mynum, 10)
- user113716^
仅适用于第一个选项,而 $
仅适用于数字 10
。因此,5555
和 xxxxx10
都将匹配成功。 - mario这不是正则表达式的好用法。
使用简单条件:
if (x > 0 && x < 6) {
// x is 1 - 5
}
if (x > 0 && x < 10) {
// x is 1 - 10
}
对于1-5,您只需要将其作为字符类括起来:
/^[1-5]$/
在1-10的情况下,您只需要增加一个额外的选项:
/^([1-9]|10)$/
regex
”,它可以节省一些打字时间。(但是,使用type=number
和min=
max=
也可以实现相同效果) - mario你想使用正则表达式的原因是什么?
/([1-9]|10)/
使用数字比较。以下的数字扩展可以检查一个数字是否在两个值之间:
Number.prototype.between =
function(lower,upper, includeBoundaries){
lower = Number(lower);
upper = Number(upper);
noCando = isNaN(lower) ||
isNaN(upper) ||
lower>=upper;
if ( noCando ) {
throw 'wrong arguments or out of range';
}
return includeBoundaries
? this >= lower && this <= upper
: this > lower && this < upper
};
// usage:
(12).between(1,12); /=> false
(12).between(1,12,true); /=> true
(12).between(0,15,true); /=> true
(0).between(-5,1); //=> true
includeBoundaries
参数还检查数字是否等于下限或上限,如果未提供,则函数返回真正的“between”检查。对于1-10,可以是:
/^([1-9]|10)$/
而对于1-5,只需要
/^[1-5]$/
/^([1-9]|10)$/
NaN
进行数字比较的结果无论如何都会返回 false。 - Phil