正则表达式限制某些数字但允许所有其他数字

时间:2016-04-14 21:14:38

标签: javascript regex

我希望正则表达式只允许除某些数字之外的数字

示例:限制101 - 109.允许所有其他

尝试

var regex = new RegExp(/^([0-9]+|[^10[1-9]]| [^0])$/);

regex.test(101)  // should give false

regex.test(109)  // should give false

regex.test(0)  // should give false

任何其他值都应该为真

regex.test(100001) // should give true

这不起作用

3 个答案:

答案 0 :(得分:2)

您可以使用基于正向的负向前导来禁用某些数字,同时匹配所有数字:

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      inflater.inflate(R.menu.fragment_playlist_synch, menu);
}

public void onPrepareOptionsMenu(Menu menu){
      ImageView syncView = (ImageView) MenuItemCompat.getActionView( menu.findItem(R.id.menu_item_sync));
      Animation rotate = AnimationUtils.loadAnimation(getContext(), R.anim.rotate);
      rotate.setRepeatCount(Animation.INFINITE);
      if(animate)
           syncView.startAnimation(rotate);
      else
           //here the animation would always be null because a new sync menuitem is created in onCreateOptionsMenu without clearing the last one
           syncView.clearAnimation();
}

RegEx Demo

/^(?!(0|10[1-9])$)\d+$/ 拒绝(?!(0|10[1-9])$),以及来自0的所有数字都是否定前瞻。

答案 1 :(得分:1)

试试这个:

!/^0|10[1-9]$/.test(101)

function check_number(n){
    return !/^0|10[1-9]$/.test(n);
}

document.write('101 : '    + check_number(101)    + '<br>');
document.write('109 : '    + check_number(109)    + '<br>');
document.write('0 : '      + check_number(0)      + '<br>');
document.write('100001 : ' + check_number(100001) + '<br>');

答案 2 :(得分:0)

示例:这会将其限制为 238 - 971
这只是表明它不是那么难的限制,
它产生一个数字范围的正则表达式 适合您的好工具是here

^(?!0*(?:23[8-9]|2[4-9]\d|[3-8]\d{2}|9[0-6]\d|97[0-1])$)\d+$

扩展

 ^ 
 (?!
      0*
      (?:
           23 [8-9] 
        |  2 [4-9] \d 
        |  [3-8] \d{2} 
        |  9 [0-6] \d 
        |  97 [0-1] 
      )
      $ 
 )
 \d+ 
 $