Ограничить длину символов в регулярном выражении? - PullRequest
14 голосов
/ 11 апреля 2010

Есть ли способ ограничить регулярное выражение 100 символами с регулярным выражением?

\[size=(.*?)\](.*?)\[\/size]

Так что Look at me! не сработает.

Я хочу ограничить числа, разрешать только цифры от 1 до 100.

Ответы [ 4 ]

25 голосов
/ 11 апреля 2010

Есть ли способ ограничить регулярное выражение до 100 символов с помощью регулярного выражения?

Ваш пример предполагает, что вы хотели бы получить число из регулярного выражения, а затем использовать это число, чтобы поместить максимальную длину в другую часть, которая позже будет найдена в регулярном выражении. Обычно это невозможно за один проход. Лучше всего иметь два отдельных регулярных выражения:

  • один соответствует максимальной длине, которую вы хотите использовать
  • тот, который использует ранее извлеченное значение, чтобы убедиться, что его собственное совпадение не превышает заданную длину

Если вы просто хотите ограничить количество символов, сопоставляемых выражению, большинство регулярных выражений поддерживают bounds с помощью фигурных скобок. Например,

\d{3}-\d{3}-\d{4}

будет соответствовать телефонным номерам (США): ровно три цифры, затем дефис, затем ровно три цифры, затем еще один дефис, а затем ровно четыре цифры.

Аналогично, вы можете установить верхний или нижний пределы:

\d{5,10}

означает «не менее 5, но не более 10 цифр».

<Ч />

Обновление: ОП пояснил, что пытается ограничить значение , а не длину . Мой новый ответ не используйте регулярные выражения для этого . Извлеките значение, затем сравните его с максимумом, извлеченным из параметра размера. Это гораздо менее подвержено ошибкам.

14 голосов
/ 25 сентября 2012

Если вы хотите ограничить допустимый ввод целочисленными значениями от 1 до 100, это будет сделано:

^([1-9]|[1-9][0-9]|100)$

Пояснение:

  1. ^ = начало ввода
  2. () = несколько вариантов для сопоставления
  3. Первый аргумент [1-9] - сопоставляет любые записи от 1 до 9
  4. | = ИЛИ разделитель аргументов
  5. Второй аргумент [1-9] [0-9] - сопоставляет записи от 10 до 99
  6. Последний аргумент 100 - Самоочевидно - соответствует записи 100

Это НЕ ПРИНИМАЕТ : 1. Ноль - 0 2. Любое целое число, которому предшествует ноль - 01, 021, 001 3. Любое целое число больше 100

Надеюсь, это поможет!

Гез

8 голосов
/ 11 апреля 2010

Если вы хотите числа от 1 до 100:

100|[1-9]\d?
0 голосов
/ 29 декабря 2015
(^(\d{2})|^(\d{4})|^(\d{5}))$

Это выражение принимает число длиной 2,4 и 5. Допустимые значения: 12 1234 12345

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...