Решение:
1[5-9][0-9]|200|7[0-4][0-9]|750
Объяснение:
Поскольку у вас есть очень хорошо определенные диапазоны, регулярное выражение является довольно простым.
Он может быть разбит на две части:
через ИЛИ через ИЛИ
Итак, вместе взятые регулярное выражение будет считано как
((150 через ИЛИ 200) ИЛИ (700 через ИЛИ 750))
Ваше первое число 150, поэтому мы должны соответствовать '1' для первая цифра, за которой следует диапазон для второй цифры, которая может быть равна 5, хотя 9 (вы не хотите ничего меньше, чем 150, поэтому 4 и меньше выходят), а также диапазон для третьей цифры, который может быть любым из 0 до 9. Это фиксирует все номера от 150 до 199.
Последний номер nu mber в первом диапазоне - 200, поэтому мы можем просто искать это. Он слишком отличается от остальных возможностей в диапазоне, поэтому его легче искать именно для него, а не пытаться представить сложный способ включить его в диапазон регулярных выражений.
Второй ряд следует за тем же паттеном, но с разными номерами. Опять же, мы ищем большую часть чисел, используя диапазон регулярных выражений и ищем последний номер 750, особенно потому, что он слишком разный - имеет номер 5 посередине. Если мы включим 5 в средний диапазон регулярных выражений, он достигнет 759, что выходит за рамки.
И, наконец, ИЛИ обе части и регулярное выражение готовы.
Настройте для ввода. Возможно, вам необходимо окружить его символами^и $ для начала и конца строки, или если у вашего ввода есть другой текст, окружающий указанное число, разверните ваше регулярное выражение, чтобы справиться с ним соответствующим образом.
Regex просто не * хороший способ справиться с этой проблемой * ... вы используете СУБД, придерживаетесь инструментов, уже находящихся в DB ... regex работает медленно. Если вы используете SQL, проверьте это http://stackoverflow.com/questions/1736630/sql-constraint-minvalue-maxvalue ... в противном случае пометьте свои СУБД – Mariano
@Mariano, являющийся медленным, может не быть основной проблемой. Если диапазоны будут более сложными, создание и поддержание регулярного выражения будет кошмаром: http://stackoverflow.com/a/20793792/1393766 – Pshemo
@Pshemo Я знаю, я пошел так просто для удовольствия. Конечно, вы всегда можете [чит] (http://utilitymill.com/utility/Regex_For_Range) – Mariano