以下部分不能正常工作:
QRegExp exp ("[À-Ÿà-ÿA-Za-z0-9\\-\\_]+");
if (!formatedName.contains(exp)) {
success = false;
}这段代码用于验证用户输入的字符串。它应该只接受数字、法语和英语字符、破折号和下划线。
实际上,代码几乎可以正常工作了。唯一的问题是,如果我还输入了合法字符,则接受特殊字符。因此,字符串"!@#@“将返回false,而字符串”地狱!@^ooo“将返回true。
我应该如何正确地使用正则表达式来只接受我的正则表达式?
谢谢
发布于 2012-11-28 04:57:05
我建议添加^和$,以表明表达式应该覆盖整个字符串,而不只是其中的一部分。
QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$");
if (!formatedName.contains(exp)) {
success = false;
}发布于 2012-11-28 04:57:22
您可以指定开始和结束分隔符,以阻止正则表达式成功地将字符串与其中包含的正则表达式的任何部分进行匹配。
"^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$"这将确保检查整个字符串。
发布于 2012-11-28 06:47:08
您还可以使用QRegExp::exactMatch(),这在本质上等同于用^和$字符替代您的正则表达式。
https://stackoverflow.com/questions/13592860
复制相似问题