2015-07-03 2 views
-2

Я ищу регулярное выражение, которое может обнаруживать любое заданное число в диапазоне от 0 до 100, за исключением 1 и 3.0-100 диапазон номеров regex исключая 1 и 3

Пример действительных чисел:

0, 2, 4, 6,13, 23 80, 99, 100 

Числа, которые должны терпеть неудачу:

1, 3 

Спасибо заранее.

+0

Таким образом, вы хотите исключить только числа '1' и' 3'. Я полагаю, что '10',' 13' и '31', например, все равно будут разрешены? – npinti

ответ

1

обнаружить любое заданное число в диапазоне от 0 до 100, однако за исключением 1 и 3

^(?!(?:1|3)$)(?:[0-9]{1,2}|100)$ 

См demo

В случае, если номера не автономные строки:

\b(?!(?:1|3)\b)(?:[0-9]{1,2}|100)\b 

См. another demo

Главное здесь в вначале look-ahead, anchors (\b границе слова, ^ начала и $ конца строки) и character classes с limiting quantifiers.

(?!(?:1|3)$) опережения убеждается матч завершается ошибкой, если 1 или (|) 3 появляется сразу после начала строки (^) и до конца строки ($) (или между границами слов, как во втором примере) ,

Класс [0-9]{1,2} символов соответствует 1 или 2 цифры (из-за предельного квантификатора {1,2}) от 0 к 9.

+0

Большое спасибо. :) Я действительно новичок в регулярном выражении и не смог использовать функцию поиска. – user2476101

+0

Привет, вышеприведенное выражение на самом деле является частью более общего выражения, где оно сочетается с некоторыми более строковыми литералами. 'Регулярное выражение: (?! (?: 1 | 3) \ b) (?: [0-9] {1,2} | 100) _ [YN] _ (?! (?: 1 | 3) \ b) (?: [0-9] {1,2} | 100) _ [YN] _ [YN] 'Итак, для этого выражения должен быть мой результат:' Sucess 4_N_2_Y_Y 'и 'Failure: 1_N_2_Y_Y', Однако даже это происходит как успех. – user2476101

+0

Попробуйте ['(?! (?: 1 | 3) _) (?: [0-9] {1,2} | 100) _ [YN] _ (?! (?: 1 | 3) _) (?: [0-9] {1,2} | 100) _ [Ю.Н.] _ [Ю.Н.] '] (https://regex101.com/r/gZ6zH0/3). '\ b' не будет работать, потому что' _' считается символом слова с помощью механизма регулярных выражений. –

Смежные вопросы