return 当我在 QT C++ 中使用正则表达式时,密钥不起作用
return key doesn't work when i use regex in QT C++
大家好,我正在尝试在 QT 中使用正则表达式进行在线编辑,但是当我使用我的正则表达式时,当我在键盘上输入 return 键时执行某些操作的一个函数不再起作用!
这是我在线编辑的正则表达式:
QRegularExpression r("[0-9\.\+\-\=\/\*\n]{100}");
ui->lineEdit->setValidator(new QRegularExpressionValidator (r,this));
这是我的功能测试:
void MainWindow::on_lineEdit_returnPressed()
{
on_pushButton_14_clicked();
}
我也尝试了不带“\n”的正则表达式,但没有任何改变。当我评论正则表达式时,我的函数正常工作。
那么有什么解决办法吗?
您的正则表达式需要支持长度为 1 的模式,因此,{100}
量词应替换为 {1,100}
甚至 {0,100}
。
此外,你也可以在字符集中加入\r
(回车return)个字符,去掉不必要的转义:
QRegularExpression r("^[0-9.+=/*\n\r-]{1,100}$");
我添加了 ^
和 $
锚点以确保正则表达式只匹配整个字符串(这里是行)。
大家好,我正在尝试在 QT 中使用正则表达式进行在线编辑,但是当我使用我的正则表达式时,当我在键盘上输入 return 键时执行某些操作的一个函数不再起作用!
这是我在线编辑的正则表达式:
QRegularExpression r("[0-9\.\+\-\=\/\*\n]{100}");
ui->lineEdit->setValidator(new QRegularExpressionValidator (r,this));
这是我的功能测试:
void MainWindow::on_lineEdit_returnPressed()
{
on_pushButton_14_clicked();
}
我也尝试了不带“\n”的正则表达式,但没有任何改变。当我评论正则表达式时,我的函数正常工作。
那么有什么解决办法吗?
您的正则表达式需要支持长度为 1 的模式,因此,{100}
量词应替换为 {1,100}
甚至 {0,100}
。
此外,你也可以在字符集中加入\r
(回车return)个字符,去掉不必要的转义:
QRegularExpression r("^[0-9.+=/*\n\r-]{1,100}$");
我添加了 ^
和 $
锚点以确保正则表达式只匹配整个字符串(这里是行)。