ЧЧ:ММ:СС
Ч:ММ:СС
Ч:М:СС
Ч:ММ:С
Ч:М:С
ЧЧ:М:СС
ЧЧ:М:С
ЧЧ:ММ:С
Это код I пробовал.
Код: Выделить всё
bool Common::isValidTime ( int32_t id, std::string timeStr )
{
const std::regex pattern ( "^\d{1,2}:\d{1,2}:\d{1,2}$" ); // pattern for HH:MM:SS
const std::regex pattern1 ( "^([0-9]):([0-5][0-9]):([0-5][0-9])$" ); // pattern for H:MM:SS
const std::regex pattern2 ( "^([0-2][0-9]):([0-9]):([0-5][0-9])$" ); // pattern for H:M:SS
const std::regex pattern3 ( "^([0-9]):([0-9]):([0-9])$" ); // pattern for H:M:S
const std::regex cPattern ( "^([0-5][0-9]).([0-9])$" ); // pattern for XX.X
const std::regex cPattern_1 ( "^([0-9]).([0-9])$" ); // pattern for X.X
switch( id )
{
case ID_KT_ACT: case ID_ALCSLK_ACT: case ID_ALCSHO_ACT:
case ID_KT_ACT_7: case ID_ALCSLK_ACT_7: case ID_ALCSHO_ACT_7:
// Matches the format of data entry
return std::regex_match ( timeStr, pattern ) ||
std::regex_match ( timeStr, pattern1 ) ||
std::regex_match ( timeStr, pattern2 ) ||
std::regex_match ( timeStr, pattern3 );
break;
case ID_COOP1_ACT: case ID_COOP2_ACT:
case ID_COOP1_ACT_7: case ID_COOP2_ACT_7:
// Matches the format of data entry
return std::regex_match ( timeStr, cPattern ) ||
( std::regex_match ( timeStr, cPattern_1 ) );
break;
}
}
Я не указывал во всех шаблонах, потому что шаблон1, шаблон2 и шаблон3 тоже не работают.
Подробнее здесь: https://stackoverflow.com/questions/791 ... sing-regex
Мобильная версия