Я вытягиваю данные из канала, что я не имею никакого контроля, и я должен проверить, является ли строка, которую мне дают, допустимым временем.
Большую часть времени я правильно отправляюсь что-то как "2:35" или "15:41" кроме других времен, это - вещи как AM или "PM" (и никакие числа)..., таким образом, я в конечном счете просто должен проигнорировать их.
Так, как я могу проверить, являются ли данные допустимым временем?
Использование Time.parse () является не лучшим решением , как показано в примере комментариев.
Я оставлю ответ здесь по «историческим причинам», чтобы оставить комментарии и в качестве предупреждения для будущих читателей!
Вы можете использовать Time.parse () и проверить исключение ArgumentError
на недопустимое время.
Дополнительным преимуществом является то, что у вас также есть время в удобном для использования формате, если он действителен!
Вы точно не указали, что вы считаете допустимым временем (например, должны ли вы принимать дополнительные секунды), поэтому вот одно предположение:
data =~ /^([01]?[0-9]|2[0-3])\:[0-5][0-9]$/