2016-04-14 69 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+ 
$ 
相關問題