开发者

Regex for 1-10 in javascript for validation

What wo开发者_StackOverflow中文版uld be the regex for numbers ranging 1-10 and 1-5? Please help this troubled soul.


You could achive that with easy number checks in 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)

If you really want to use regex:

/^([1-9]|10)$/
and
/^[1-5]$/

UPDATE:

  • Fixed the first regex to correctly match the string boundings
  • Added parseInt to the first example to ensure correct number-checks


This is not a good use of Regular Expressions.

Use simple conditions:

if (x > 0 && x < 6) {
  // x is 1 - 5
}

if (x > 0 && x < 10) {
  // x is 1 - 10
}


For 1-5 you only need to enclose it as character class:

  /^[1-5]$/

For 1-10 you'd just need an additional alternative:

  /^([1-9]|10)$/


Is there a reason you want to use regular expressions?

/([1-9]|10)/


Use numeric comparison. The following Number extension can check if a number falls between 2 values:

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

The function converts the parameters to Number because 0 can evaluate to a boolean in javascript, to be able to check if the paramaters are real number values and to be able to check if lower is not greater than/equal to upper. In those cases an error is thrown.

The includeBoundaries parameter also checks if a Number is equal to lower or upper, if it's not supplied, the function returns a real 'between'-check.


For 1-10 it can be

/^([1-9]|10)$/

and for 1-5 simply

/^[1-5]$/


The answer would be

/^([1-9]|10)$/
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜