老实说,我不知道自己做错了什么。我检查了http://regexpal.com/中的正则表达式,它运行得很好
这是我的代码:
std::string text = "1.98";
std::regex regex_number("((\b[0-9]+)?\.)?[0-9]+\b");
bool isValid = std::regex_match(text, regex_number);
它应该对整数和双精度有效 例如:
无效
我获取所有内容的非有效文本。
答案 0 :(得分:2)
你忘了逃避字符串文字中的反斜杠:
"abc...z"
答案 1 :(得分:1)
你还把第一个单词分隔符放在了错误的位置。它应该在可选部分之外:
"\\b(([0-9]+)?\\.)?[0-9]+\\b"
(对不起,其他答案;我仍然没有代表添加评论。)