#regex #validation #syntax #input #textbox
#регулярное выражение #проверка #синтаксис #ввод #текстовое поле
Вопрос:
Я должен сделать этот обзор вопросов, и пользователь должен иметь возможность вставить время. Для этого я создал 2 текстовых поля, 1 для часового ввода и 1 для минутного ввода.
Что я хочу сделать сейчас, так это проверить, не слишком ли высоки значения, чтобы быть правильными.
Пример:
Значение часа не может быть выше 23, а минута не может быть выше 59.
Каков наилучший способ проверить это?
Я думал о операторах if, но, может быть, есть гораздо более эффективный способ сделать это?
Возможно, регулярные выражения, хотя я бы не знал правильного синтаксиса для этого вопроса.
Заранее спасибо.
Комментарии:
1. регулярное выражение, вероятно, не лучший инструмент для этого. какой язык вы используете?
2. Извините, я тоже должен был это сказать. Я использую VB.net , вместе с ASP.net . Но все регулярные выражения будут в коде, лежащем в основе aka VB
Ответ №1:
Если это должно быть регулярное выражение:
^(?:2[0-3]|[01]?[0-9])$
подтвердит час и
^[0-5]?[0-9]$
подтвердит минуту.
Объяснение регулярного выражения «Часы»: (вы можете легко вычислить минуты самостоятельно):
^ # Match start of string
(?: # Match either...
2[0-3] # 2, followed by 0, 1, 2 or 3,
| # or...
[01]? # 0 or 1 (optional; the empty string is OK, too), followed by
[0-9] # any digit
) # End of group
$ # Match end of string
Комментарии:
1. Спасибо за этот ответ, но как это тогда работает? Не могли бы вы объяснить, как они проверяют часы и минуты?
2. Хорошо, большое вам за это спасибо. Теперь все ясно. Я бы проголосовал 1 за этот пост, но это не позволит мне, потому что мне нужно 15 повторений или больше. Итак, ответ = 1:P Большое спасибо
Ответ №2:
Операторы If — это, безусловно, правильный путь. Нет причин использовать регулярное выражение для чего-то настолько простого … это все равно, что использовать кувалду, чтобы забить маленький гвоздь в стену. Если операторы также очень эффективны и удобны для чтения … нет причин использовать регулярное выражение для того, что вы делаете.
Комментарии:
1. Спасибо и за этот отзыв. Я уже использовал его в своем коде, и мне нравится, как он работает сейчас. Регулярное выражение — это то, что я, скорее всего, буду использовать чаще через некоторое время, если увижу, какие проекты стоят на повестке дня на работе. По крайней мере, мой коллега сказал мне это. Я тоже попробую операторы if и просто посмотрю, что работает лучше / быстрее. Спасибо, что подумали со мной / нами