0

以下部分无法正常工作:

  QRegExp exp ("[À-Ÿà-ÿA-Za-z0-9\\-\\_]+");
  if (!formatedName.contains(exp)) {
    success = false;
  }

此代码块用于验证用户输入的输入字符串。它应该只接受数字、法语和英语字符、破折号和下划线。

实际上,代码几乎可以正常工作。唯一的问题是如果我也输入合法字符,则接受特殊字符。因此,字符串 "!@#@" 将返回 false,但字符串 "hell!@^ooo" 将返回 true。

我应该如何正确使用正则表达式来只接受我的正则表达式?

谢谢你

4

3 回答 3

1

我建议添加^and$表示表达式应该覆盖整个字符串,而不仅仅是它的一部分。

QRegExp exp ("^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$");
  if (!formatedName.contains(exp)) {
    success = false;
  }
于 2012-11-27T20:57:04.857 回答
1

您可以指定开始和结束分隔符以阻止正则表达式成功地将字符串与其中包含的正则表达式的任何部分匹配。

"^[À-Ÿà-ÿA-Za-z0-9\\-\\_]+$"

这将确保检查整个字符串。

于 2012-11-27T20:57:22.277 回答
1

您还可以使用QRegExp::exactMatch(),这基本上等同于用^and$字符包围您的正则表达式。

于 2012-11-27T22:47:08.470 回答