以下作品无效:
QRegExp exp ("[À-Ÿà-ÿA-Za-z0-9\\-\\_]+");
if (!formatedName.contains(exp)) {
success = false;
}
此代码块用于验证用户输入的输入字符串。它应该只接受数字,法语和英语字符,破折号和下划线。
实际上,代码几乎正常工作。唯一的问题是,如果我也输入合法字符,则接受特殊字符。因此,字符串“!@#@”将返回false,但字符串“hell!@ ^ ooo”将返回true。
我应该如何正确使用正则表达式才能接受我的正则表达式?
谢谢
答案 0 :(得分:1)
我建议添加^
和$
来表示该表达式应该覆盖整个字符串,而不仅仅是其中的一部分。
QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$");
if (!formatedName.contains(exp)) {
success = false;
}
答案 1 :(得分:1)
您可以指定开始和结束分隔符,以阻止正则表达式与其中包含的正则表达式的任何部分成功匹配字符串。
"^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$"
这将确保检查整个字符串。
答案 2 :(得分:1)
您还可以使用QRegExp::exactMatch(),这实际上相当于使用^
和$
字符来覆盖正则表达式。