2016-09-18 30 views
1

我很新推出正則表達式庫。以下示例代碼用於檢查輸入日期是否遵循YYYY-MM-DD格式。但是,正則表達式似乎存在錯誤。它總是返回的false。 *C++ boost正則表達式日期錯誤

  • 我在Windows上運行控制檯應用程序。

* 正則表達式從here

bool regexValidate(string teststring) 
{ 
boost::regex ex("^(20\\d{2})(\\d{2})(\\d{2})"); 
if (boost::regex_match(teststring, ex)) { 
    cout << "true"; 
    return true; 
} 
else { 
    return false; 
} 
} 
int main() 
{ 


string teststr = "2016-05-15"; 


cout << teststr << " is "; 
if (regexValidate(teststr)) { 
    cout << " valid!" << endl; 
} 
else { 
    cout << " invalid!" << endl; 
} 

system("PAUSE"); 
return 0; 
} 

回答

1

拍攝即將完成;只需添加連字符您正則表達式:

"^(20\\d{2})-(\\d{2})-(\\d{2})" 

BTW,這將不會在2000年之前或2099年之後解析的日期,也沒有明確的結束串($)結尾。更多的東西一樣:

"^(\\d{4})-(\\d{2})-(\\d{2})$" 

...我覺得應該讓你在最近幾個世紀;-)任何地方好的

+0

謝謝!正常工作應包括字符串結尾($) – unprogram14