首先看几个例子:
1.限制浮点数输入范围为[-180,180]
QRegexp rx("^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\.\d)?)$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);
2.限制浮点数输入范围为[-180,180]并限定为小数位后4位
QRegExp rx("^-?(180|([1-9]?[0-9]|1[0-7][0-9])(\.\d{1,4})?)$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);
3.限制浮点数输入范围为[-90,90]并限定为小数位后4位
QRegExp rx("^-?(90|[1-8]?\d(\.\d{1,4})?)$");
QRegExpValidator *pReg = new QRegExpValidator(rx, this);
lineEdit->setValidator(pReg);
简答说下这几个正则表达式:
1.限制浮点数输入范围为[-180,180]
^-?(180|([1-9]?\d|1[0-7][0-9])(.\d)?)$ 或者也可以写成 ^-?(180|([1-9]?[0-9]|1[0-7][0-9])(.[0-9])?)$
2.限制浮点数输入范围为[-180,180]并限定为小数位后4位
^-?(180|([1-9]?\d|1[0-7][0-9])(.\d{1,4})?)$ 或者也可以写成 ^-?(180|([1-9]?[0-9]|1[0-7][0-9])(.[0-9]{1,4})?)$
3.限制浮点数输入范围为[-90,90]并限定为小数位后4位
^-?(90|[1-8]?\d(.\d{1,4})?)$
1.式子中开头的^和结尾的$限定字符串的开始和结尾;
2."-?" 表示一个或0个负号,这里面的问号表示其前面的字符重复0次或1次;
3.管道符“|”表示平行分组,表示180或其它形式;
4.[1-9] 表示限定数字范围为1到9,其余类似,如果是有限几个值,还可以用枚举的方式,比如限定-255到255时,第一个数字2的限定,应该表达为[1,2],这表示这个位置只允许是1或者2;
5."\d"是一个转义字符,表示匹配一位数字(0到9);
6.“.” 表示匹配小数点;
7."\d+",这里面的+表示其前面的\d重复一次或多次;
8."\d{1,4}",里面的{1,4}表示重复1到4次;
有了以上知识,下面我们可以很快的写出限定[-255,255]的正则表达式:
[-255,255]整数:^-?(255|[1-9]?[0-9]|[1,2][0-5][0-4])$
[-255,255]小数:^-?(255|[1-9]?[0-9]|[1,2][0-5][0-4])(.\d)?)$