Попытка проверить текстовое поле ввода на время

#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 и просто посмотрю, что работает лучше / быстрее. Спасибо, что подумали со мной / нами