使用正则表达式验证输入

时间:2015-10-06 21:57:14

标签: c++ regex validation

老实说,我不知道自己做错了什么。我检查了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);

它应该对整数和双精度有效 例如:

  • 1.2
  • 1
  • 1.99
  • 0.6

无效

  • AA
  • DD
  • 1.2H
  • 1,6

我获取所有内容的非有效文本。

2 个答案:

答案 0 :(得分:2)

你忘了逃避字符串文字中的反斜杠:

"abc...z"

答案 1 :(得分:1)

你还把第一个单词分隔符放在了错误的位置。它应该在可选部分之外:

"\\b(([0-9]+)?\\.)?[0-9]+\\b"

(对不起,其他答案;我仍然没有代表添加评论。)