2016-04-14 132 views
1

我想正则表达式只允许数字,除了某些号码正则表达式来限制某些数字,但允许所有其他

例如:限制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 

这不起作用

+0

如何'0'假的?它不在'101-109'之间。 – 2016-04-14 21:15:45

回答

2

可以使用负前瞻基于正则表达式来禁止某些电话号码,同时匹配所有的数字:

/^(?!(0|10[1-9])$)\d+$/ 

RegEx Demo

(?!(0|10[1-9])$)是否定的前瞻以禁止0和所有数字从101-109

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>');

+0

我也想要1,2,234,432等。所有数字应该被允许,除了101到109 – user544079

+0

明白了..我编辑了我的答案@ user544079 ..! – Shafizadeh

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+ 
$ 
相关问题