2016-02-04 110 views
0

我想檢查日期字符串的格式爲yyyy-mm-dd格式。我打電話了regex_match功能,像這樣:正確使用regex_match

if (regex_match(date, regex("/\d{4}-\d{2}-\d{2}/"))) 

中所傳遞的字符串正是「1997年3月26日」當我使用正則表達式測試它拿起正則表達式。

我想這是與regex_match和我打電話給它的方式,但我不知道它還需要什麼。

回答

1

你應該寫這樣的:

"\\d{4}-\\d{2}-\\d{2}" 

你需要雙\\轉義反斜線。記住,你必須用C++來逃避它,然後然後正則表達式。

另外,不需要/

希望這會有所幫助!

+0

非常感謝! –

+0

沒問題!如果這對您有用,請繼續並將其標記爲「接受的解決方案」。這樣,任何有此問題的人都可以輕鬆找到答案:) @KyleJensen – Spencer4134

+0

不需要使用雙反斜槓 - 在處理正則表達式時,應該只使用原始字符串文字。 –

1

這裏不應該有正則表達式分隔符(這些/符號包含模式)。

此外,反斜槓必須在規則字符串一倍,但是,當你使用正則表達式的工作,最好是使用原始字符串字面量(原始字符串字面量通常與R"(,然後幫助形成)"包含序列,其中()也可以用一些其他分隔符替換)。

所以,你可以使用

#include<regex> 
#include <iostream> 
using namespace std; 

int main() { 
    bool found = regex_match("1997-03-26",regex(R"(\d{4}-\d{2}-\d{2})")); 
    cout<<(found?"found":"not found"); 
    return 0; 
} 

IDEONE demo

介意regex_match需要整個字符串匹配!否則,對於部分匹配,請使用regex_search

+0

你能解釋一下嗎?我實現了這一點,它沒有工作 –

+0

我提供了一個完整的演示。請檢查並告訴我是否仍有不清楚的地方。 –

+0

對於響應緩慢,我很抱歉,我在筆記本電腦上,它很不方便。 –