鉴于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上测试了正则表达式模式并且它有效.
那我错了什么?
反斜杠in \.和\d被视为C++字符串文字的转义字符.
要么使用原始字符串文字(R"***(^[+-]?\d{1,3}\.?\d?$)***"),要么像这样转义反斜杠"^[+-]?\\d{1,3}\\.?\\d?$"