示例
#include <QLineEdit>
#include <QRegExpValidator>
QRegExp rx1("-?\\d+(\\.\\d+)?"); //匹配所有的数字,包括负数和小数,示例1
QRegExp rx2("^-?([0-9]+[\.0-9][0-9]+)$"); //匹配所有的数字,包括负数和小数,示例2
QRegExp rx3("^([1-9][0-9]*){1,3}$"); //正整数,示例3
QRegExp rx4("^(([1-9]+[0-9]*.{1}[0-9]+)|([0].{1}[1-9]+[0-9]*)|([1-9][0-9]*)|([0][.][0-9]+[1-9]*))$"); //正数,示例4
QRegExp rx5("^([1-9][0-9]*){1,3}|-1|0$"); //-1、0和正整数,示例5
QRegExp rx6("^([0-9]{1,2}(\\.[0-9]{1,2})?|100(\\.00?)?)$"); //百分比,示例6
QLineEdit* pLlineEdit = new QLineEdit();
QRegExpValidator* pValidator = new QRegExpValidator(rx1, pLlineEdit);
pLlineEdit->setValidator(pValidator);
rx1.exactMatch("111"); //界面输入、字符串判别均通过测试
rx2.exactMatch("111"); //界面输入通过测试,字符串判别未通过测试
示例1存在的问题:界面上可输入00000这种数值,待解决。
示例6存在的问题:当外部导入excel获取到QString的小数值后,直接判别rx6.exactMatch未通过测试,需要按下列方式转一下才可以。
QString qstr = "20.56";
double dTemp = qstr.toDouble();
qstr = QString::number(dTemp);
QRegExp rx6("^([0-9]{1,2}(\\.[0-9]{1,2})?|100(\\.00?)?)$"); //百分比
rx6.exactMatch(qstr);//测试通过