2016-04-14 3 views
1

я хочу регулярное выражение, чтобы только цифры, за исключением некоторых номеров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 

Это не работает

+0

Как '0' ложь? Это не между 101-109. –

ответ

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+$

Expanded

^
(?! 
     0* 
     (?: 
      23 [8-9] 
     | 2 [4-9] \d 
     | [3-8] \d{2} 
     | 9 [0-6] \d 
     | 97 [0-1] 
    ) 
     $ 
) 
\d+ 
$ 
Смежные вопросы