4

Ожидание: строка содержит или 1 или 2 числа, строка не может начаться с 0

  • Пробую так: "^[1-9]\\d{1,2}&" - не подходит
  • Пробую так2: ^[^0]\\d{1,2}& - не подходит (числа 12, 9, 33 и др не принимаются)

Что я делаю не так? по литературе [^pattern] должно исключить вхождение, а где ^-& должно проверить строгое вхождение чисел

Nofate
  • 34,603
  • не вижу комментария Павла с линкой, но нет не дубль. У меня ожидание отличается и в той теме ответа я на свой вопрос не нашёл. – TheOriginalNickname Sep 23 '15 at 09:53
  • я сам заметил и удалил – pavel Sep 23 '15 at 10:04

5 Answers5

7

строка содержит или 1 или 2 числацифр, строка не может начаться с 0

Рекомендую использовать

^[1-9]\\d?$

Это выражение находит строки из 1-й или 2-х цифр, не начинающиеся с 0.

Демо

  • ^ - начало строки
  • [1-9] - 1 цифра от 1 до 9 (0 исключен)
  • \\d? - 1 или 0 цифр
  • $ - конец строки

NB: При использовании String.matches метасимволы ^ и $ не требуются.

  • 1
    А что здесь кому-то не нравится? Пожалуйста, объясните. – Wiktor Stribiżew Sep 23 '15 at 11:43
  • Регулярное выражение предложенное вами, за час до вашего ответа было признано автором вопроса как неверным (пропускающим лишние символы), по этой причине я вам поставил минус. – Visman Sep 23 '15 at 12:28
  • 1
    @Visman: Вы уверены? Я не видел такого выражения среди предложенных. – Wiktor Stribiżew Sep 23 '15 at 12:38
  • Ответ был удален, поэтому вы его не видите. – Visman Sep 23 '15 at 12:54
  • Да, на этом SO мне до 10 000 пока далеко... – Wiktor Stribiżew Sep 23 '15 at 12:55
  • @Visman ТС где-то ошибается. Это выражение не может совпадать с 022. Ответ верен, но ТС использует его неверно. Проблема не в ответе, а в ТС. – ReinRaus Sep 29 '15 at 15:12
  • @ReinRaus, сейчас как-то это уже без разницы. Тем более у этого ответа минусов нет, я его снял давным-давно. – Visman Sep 29 '15 at 15:13
  • @Visman ну да. Просто топнули вопрос... Не обратил внимание на дату. Надо было сразу уточнять у ТС код в котором он получает такие невозможные результаты. Ваш ответ абсолютно верен был же. – ReinRaus Sep 29 '15 at 15:27
1

[1-9]?[0-9]

Первая цифра ([1-9]) входит не обязательно (?), вторая ([0-9]) обязательно. "Строгое совпадение" обозначается как ^...$ (а не &), но в Java принято использовать вместо этого метод Matcher.matches()

1

Для строки из чисел

^[1-9][0-9]*$

Для строки из цифр

^[1-9][0-9]?$
Qwertiy
  • 123,725
0

Вы немного перепутали метасимвол конца строки (знак доллара, $) с амперсандом (амперсанд, &). После небольшого исправления все должно взлететь:

"^[1-9]\\d{1,2}$"
etki
  • 36,151
  • знак действительно перепутал - косяк. Но такое выражение, почему-то , принимает число, 022, 333,0000333 – TheOriginalNickname Sep 23 '15 at 09:57
0

на ext js делал так

regex: /^[1-9]{1,2}$/,