RegEx для строки длиной 0-2
Я пытаюсь сопоставить строку, которая может быть либо пустой, либо иметь в ней 1 или 2 числа, например следующее:
"(пустой)" 1 ""23"
Строка с большим числом чисел или нечисловыми символами не должна совпадать. Мое ближайшее предположение - регулярное выражение:
[0-9] {0,2}
Что я читаю, чтобы сказать "числа от 0 до 9, встречающиеся от 0 до 2 раз". Однако на практике я обнаружил, что регулярное выражение также соответствует более длинным строкам типа "333". Как можно ограничить длину строки в регулярных выражениях?
Ответы
Ответ 1
Используйте следующее регулярное выражение:
^[0-9]{0,2}$
У вас почти было - символы ^
и $
- это привязки, которые соответствуют началу и концу строки соответственно.
Для более подробного обсуждения якорей см. здесь:
[Анкеры] не соответствуют ни одному персонажу. Вместо этого они соответствуют позиции до, после или между символами. Они могут использоваться для "привязки" регулярного выражения в определенной позиции.
Ответ 2
Вам нужно anchor регулярное выражение:
^[0-9]{0,2}$
В противном случае регулярное выражение будет с удовольствием соответствовать подстрокам.
Ответ 3
Используйте метасимволы для начала и конца строки:
^[0-9]{0,2}$
Если вы их не используете, он соответствует в любой точке строки, а "12", которая соответствует, является частью "123".