Potrzebuję sprawdzić, czy wpisana przez użytkowanika wartość mieści się w formacie:
yyyy-MM-dd hh:mm:ss
(chciałbym, żeby np. 2015-3-2 23:1:1 albo 2015-03-02 23:01:01 również było poprawną formą)
Do tego celu napisałem następujący kod:
std::string strDateTimeRegex =
"^(19[0-9][0-9]|20[0-9][0-9])-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12][0-9]|3[01])\s([1-9]|[01][1-9]|2[1-3]):([1-9]|[0-5][1-9]):([1-9]|[0-5][1-9])$";
std::regex oREPattern(strDateTimeRegex);
bool bMatch = std::regex_match(*a_pstrInput, oREPattern);
std::cout << *a_pstrInput << " -- " << (bMatch ? "Valid" : "Invalid") << std::endl;
a_pstrInput to oczywiście wartość wpisywana przez użytkownika.
Czemu ciągle mam "Invalid"?
Czy jakiś dobry człowiek może mi wskazać, co robię źle?
Bo pierwszy raz mam bawię się regular expressions i na bank robię coś źle... Ale co?