首页 > 解决方案 > 使用 cpp11 正则表达式时出现正则表达式错误

问题描述

我试图使用 验证密码的复杂性std::regex,并获得一些示例,例如:

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$

我把它翻译成
regex pwd_regex=regex(string("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,20}$"));

regex_error但是在运行时出现错误代码 4 (gcc 4.8.5)的异常。

怎么了?我在这个问题中尝试了其他示例,但也失败了。

标签: regexc++11

解决方案


此问题中使用的模式与您使用的模式不同,如下所示:

std::string str("password");
std::regex r("^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{8,20}$");
std::smatch m;
std::regex_search(str, m, r);

推荐阅读