2016-09-18 5 views
1

私はregexライブラリを強化するために非常に新しいです。次のサンプルコードは、入力された日付がYYYY-MM-DDフォーマットに従っているかどうかを確認するために使用されます。ただし、正規表現にエラーがあるようです。それは常にfalseを返します。 *C++ boost regex dateエラー

  • 私は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})" 

ところで、これは2000年以前または2099年以降の日付を解析せず、明示的なエンド・オブ・文字列($)は、最後にありません。以上のような何か:

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

...私はどこでも、最近の世紀;-)

+0

おかげであなたが良い作るべきだと思います!細かい作業には、文字列の終わり($) – unprogram14

関連する問題