我在Qt 5.2.1工作。我需要编写一个正则表达式,它将找到表示具有十进制值的数字的字符串,例如它会找到1.234或123.4,但不会找到123或类似a1.2的东西。我有这个正则表达式:
QRegExp r("^\\d+\.\\d+$");
但是我注意到除了找到它应该的值之外,它还会找到任何全部数字的值并且具有> = 3位但没有小数,例如12345,以及除中间一个字符之外的所有数字的值,例如12:345。我很确定这个问题来自正在尝试使用"的正则表达式。"代表任何角色,但我想用"。"应该让它认识到实际的"。"而不是字符。如果有人看到我做错了什么,我会很感激帮助。谢谢!
答案 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