Qt - RegExp无法正常工作

时间:2014-09-22 16:58:27

标签: c++ regex qt

我在Qt 5.2.1工作。我需要编写一个正则表达式,它将找到表示具有十进制值的数字的字符串,例如它会找到1.234或123.4,但不会找到123或类似a1.2的东西。我有这个正则表达式:

QRegExp r("^\\d+\.\\d+$");

但是我注意到除了找到它应该的值之外,它还会找到任何全部数字的值并且具有> = 3位但没有小数,例如12345,以及除中间一个字符之外的所有数字的值,例如12:345。我很确定这个问题来自正在尝试使用"的正则表达式。"代表任何角色,但我想用"。"应该让它认识到实际的"。"而不是字符。如果有人看到我做错了什么,我会很感激帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

试试这个:

QString txt = ui->textEdit->toPlainText();
QRegExp r("[0-9]+\\.[0-9]+");
QRegExp r("^\\d+\\.\\d+$");//with this \\. works properly too (same output)

if(txt.contains(r))
{
    qDebug() << txt << "contains double" ;
}
else
    qDebug() << txt << " not contains double" ;

在我的计算机上,它会捕获带小数点的数字并忽略其他数字。

输出:

"45:3"  not contains double 
"45.323" contains double 
"12345"  not contains double 
"12:345"  not contains double