C++ 11正则表达式模式匹配

pla*_*cel 1 c++ regex c++11

鉴于ECMAScript正则表达式,我试图针对指定的模式测试字符串.例如,字符串"+0.1"应该通过测试.但结果std::regex_match假的.

#include <regex>
#include <string>

std::regex format("^[+-]?\d{1,3}\.?\d?$");
std::string str = "+0.1";

bool match = std::regex_match(str, format); // false
Run Code Online (Sandbox Code Playgroud)

我还在regexr上测试了正则表达式模式并且它有效.

那我错了什么?

mil*_*bug 7

反斜杠in \.\d被视为C++字符串文字的转义字符.

要么使用原始字符串文字(R"***(^[+-]?\d{1,3}\.?\d?$)***"),要么像这样转义反斜杠"^[+-]?\\d{1,3}\\.?\\d?$"

Live On Coliru