使用正则表达式限制QLineEdit不能输入大于某个整数,即:使用正则表达式,匹配不大于某个整数
举例:匹配不大于4567
* 原理分析:
组装
现有多个匹配条件,需要使用符号|连接多个条件,所以综上条件,正则表达式写做:
[0-9]|[0-9][0-9]|[0-9][0-9][0-9]|[0-3][0-9][0-9][0-9]|4[0-4][0-9][0-9]|45[0-6][0-9]|456[0-7]|4567
可以看得出,上面的写法非常冗余,现在将上面的写法稍做简化,写法如下:
\d|\d{0,2}|\d{0,3}|[0-3]\d{0,3}|4[0-4]\d{0,2}|45[0-6]\d|456[0-7]|4567
QLineEdit限制输入代码
/* ^ 和 $ 表示正则表达式的起始和截止位置
* \d 匹配任意数字
* {0,2} 重复0-2次,包括0和2
* 为避免\d被转义,需要先转义\,所以是两个\
*/
QRegExp rx("^\\d|\\d{0,2}|\\d{0,3}|[0-3]\\d{0,3}|4[0-4]\\d{0,2}|45[0-6]\\d|456[0-7]|4567$"); // 匹配小于4567
QLineEdit * edit = new QLineEdit(this);
edit->setValidator(new QRegExpValidator(rx,this));