(?:(\d\d?):)?([0-5][0-9])
Если вы хотите проверить часы:
(?:([01]?[0-9]|2[0-3]):)?([0-5][0-9])
РЕДАКТИРОВАТЬ : проверено и исправлено.
Однако, лучший способ сделать это с помощью DateTime.ParseExact
, например так: (проверено)
TimeSpan time = DateTime.ParseExact(
input,
new string[] { "HH:mm", "H:mm", "mm", "%m" }, //The % is necessary to prevent it from being interpreted as a single-character standard format.
CultureInfo.InvariantCulture, DateTimeStyles.None
).TimeOfDay;
Для проверки вы можете использовать TryParseExact .