Час регулярных выражений: минута (до 31:59) - PullRequest
2 голосов
/ 18 января 2010

Мне нужно указать час в строке в регулярном выражении.Правила следующие:

  • Час указывается в формате %m или %h:%m (под %x я имею в виду xx или x);
  • Час должен быть до 31:59;
  • Если НЕ передавать строки типа 000, 25:545;:12;

Итак, мой настоящий вариант Regex (с опцией ExplicitCapture , я проверяю здесь ):

((?<hours>([012]*[0-9])|([3]*[01]))\:)*(?<minutes>[0-5]*[0-9])

Проблема в том, что я не могу «ограничить» эту строку ($myregex^, как ни странно, остановилсяобнаружение допустимой строки).Есть идеи почему?

1 Ответ

4 голосов
/ 18 января 2010

Попробуйте это:

^((?<hours>([012]?\d)|(3[01])):)?(?<minutes>[0-5]?\d)$

У вас есть проблемы с вашим регулярным выражением. В основном вы используете * там, где не должны. Это открывает двери для многих ошибок. Например, оно соответствует строке "0010203333333".

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