Подтвердить что ты не робот

RegEx для строки длиной 0-2

Я пытаюсь сопоставить строку, которая может быть либо пустой, либо иметь в ней 1 или 2 числа, например следующее:

"(пустой)" 1 ""23"

Строка с большим числом чисел или нечисловыми символами не должна совпадать. Мое ближайшее предположение - регулярное выражение:

[0-9] {0,2}

Что я читаю, чтобы сказать "числа от 0 до 9, встречающиеся от 0 до 2 раз". Однако на практике я обнаружил, что регулярное выражение также соответствует более длинным строкам типа "333". Как можно ограничить длину строки в регулярных выражениях?

4b9b3361

Ответ 1

Используйте следующее регулярное выражение:

^[0-9]{0,2}$

У вас почти было - символы ^ и $ - это привязки, которые соответствуют началу и концу строки соответственно.

Для более подробного обсуждения якорей см. здесь:

[Анкеры] не соответствуют ни одному персонажу. Вместо этого они соответствуют позиции до, после или между символами. Они могут использоваться для "привязки" регулярного выражения в определенной позиции.

Ответ 2

Вам нужно anchor регулярное выражение:

^[0-9]{0,2}$

В противном случае регулярное выражение будет с удовольствием соответствовать подстрокам.

Ответ 3

Используйте метасимволы для начала и конца строки:

^[0-9]{0,2}$

Если вы их не используете, он соответствует в любой точке строки, а "12", которая соответствует, является частью "123".