C++Qt RegExp与@、|或^等特殊字符不匹配
C++ Qt RegExp does not match special characters like @ or | or ^
我目前正在寻找RegExp问题的解决方案。我浏览了文档和互联网,但似乎几乎没有人使用RegExp——至少,我找不到我要找的东西。
根据SANS密码策略研究所的说法,我目前正在进行密码强度检查。(http://www.sans.org/security-resources/policies/Password_Policy.pdf)
它说一个强密码包含:
"特殊"字符(例如@#$%^&*()_+|~-=`{}[]:";'<>/等)
所以我想把它应用到我的Qt项目中。相关代码为:
bool specialChars = contains("[@|#|$|%|^|&|*|(|)|_|+|||~|-|=||`|{|}|[|]|:|"|;|'|<|>|/]", password);
而包含的是:
/**
* @brief PasswordStrenghChecker::contains
* @param needle
* @param hay
* @return
*/
bool PasswordStrengthChecker::contains(QString needle, QString hay)
{
QRegExp check(needle);
for(int i = 0; i < hay.length(); i++)
{
if ( check.exactMatch(hay.at(i)) )
{
return true ;
}
}
return false;
}
当我检查它显示的结果时,@和任何其他字符都不匹配。这里发生了什么事?正则表达式适用于任何其他条件,例如:
bool digits = contains("\d", password);
bool lowerCase = contains("[a-z]", password);
bool upperCase = contains("[A-Z]", password);
我期待着你的帮助。
尝试使用反斜杠查找您发现问题的字符
相关文章:
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- C++正则表达式字符类不匹配
- 回文,不包括特殊字符和空格
- 使用 strcmp() 比较 c 样式字符数组时不匹配
- 尝试使用 fstream 将字符写入文件:'operator<<'不匹配
- 如何使用正则表达式匹配不包含特殊字符(&、\、<、>、|、)的字符串,除非它们以反斜杠开头
- 反向数组,而不会影响特殊字符
- Base64 在编码特殊字符时不起作用
- C++ 错误:与调用<类构造函数(字符*&、字符*&、字符*&、字符*&)不匹配
- C++ 错误:对 '(std::string {aka std::basic_string}) (<char>无符号整数、字符)的调用不匹配
- 与'operator[]'不匹配(操作数类型为 'QVariant' 和"常量字符 [2]") QVariant/QVariantMap
- 我有编译器的情况。当我运行代码来去除一串特殊字符时,它在一个编译器中运行,但在另一个编译器中不运行?
- 通过添加一些特殊字符,使 /* 的含义用于取消引用和划分不用于注释
- C++ 特殊字符的 Solaris 大写转换不起作用
- Unicode和Clang中变量名中的特殊字符是不允许的吗
- C++Qt RegExp与@、|或^等特殊字符不匹配
- 我正在尝试清除数据文件中具有某些条件的特殊字符,但这些条件不满足
- getElementsByTagName()不能处理DOMDOCUMENT60的特殊字符