【pyqt5】 关于QT限制输入约束的正则表达式详解和一些常用表达式

qt中,常使用正则表达式来约束QLineEdit的输入。例如:
表示只允许输入数字

myValidator = QRegExpValidator(QRegExp("^[0-9]+$"))
self.lineEdit.setValidator(myValidator)  

1.根据上面案例,我们事先介绍一下正则符号[0-9]
它表示可以输入的字符在0,1,2,3,4,5,6,7,8,9之间。表示了只能输入数字。

举一反三,若是符号改为[A-Z]表示只能输入大写字母,符号改为[a-z]表示只能输入小写字母。我们也可以联合起来:[A-Za-z0-9]表示只能输入大写字母,小写字母和数字。
\.表示小数点,[0-9\.]则表示可以输入数字和小数点。

2.上面案例中,跟在[0-9]后面的+表示,可以输入无限个字符。
但假如我们要输入有限的字符:
2.1可以采用[0-9][0-9]$表示限定输入两个数字,范围都是0~9.
2.2假如限制输入9个数字,不需要讲[0-9]重复9遍,\d表示能够匹配一个数字,范围是【0~9】。也就是说[0-9][0-9]$等同于[0-9]\d[0-3][0-9]$等同于[0-3]\d。那么我们若是要限制输入九个数字,那么就可以输入[0-9]\d{8}\d{8}就表示\d重复8次。
注:\d只对数字有效果[A-Z]\d$还是等同于[A-Z]$

3.定位符
^匹配输入字符串开始的位置。
$匹配输入字符串结尾的位置。

接下来分析下一组案例:
[-255,255]整数:

^-?([0,1]?\d?\d|2[0-4]\d|25[0-5])$

4.?的作用表达前面的字符出现了0次或一次。
也就是说:^-?([0-9])$等同于^-([0-9])$加上^([0-9])$
-代表负数,上述的表示方式就代表了正数和负数。

5.|表示管道,就是平行分组,后来取并集作为最后结果。
从案例上分析,^-?([0,1]?\d?\d|2[0-4]\d|25[0-5])$也就等于^-?([0,1]?\d?\d)$ 再加上^-?(2[0-4]\d)$ 再加上^-?(25[0-5])$

6.最后,结合上述讲解综合分析语句:
^-?([0,1]?\d?\d|2[0-4]\d|25[0-5])$
我们根据管道分解为3块:
^-?([0,1]?\d?\d)$:表示正负号为正数或负数,百位上0~1,十位上0~9,在个位上0~9。综合表示为-199~199的范围。
^-?([1,2]?[0-4]?\d)$ :表示正负号为正数或负数,百位上0~2,十位上0~4,在个位上0~9。综合表示为-249~-200,200~249的范围。
^-?([1,2]?5[0-4]?)$:表示正负号为正数或负数,百位上0~2,十位上为5,个位上0~4。综合表示为-255~-250,250~255的范围。

接下来分析下一组浮点数案例:
非零开头的最多带两位小数的数字:

^-?(180|1?[0-7]?\d(\.\d{2})?)$

7.\.代表可输入小数点。\.\d{2}表示小数点后可输入2位。若是\.\d+则表示小数点后可输入任意位数。

常用表达式:

1.约束输入大写字母

^[A-Z]+$

2.约束输入小写字母

^[a-z]+$

3.约束输入大小写字母加上数字和下划线。

^[0-9A-Za-z_]+$

4.约束输入数字

^[0-9]+$

5.约束输入11位数字

^\d{11}$

6.约束输入[100,-100]整数

^-?(100|1?\d{1,2})$

7.约束输入[100,-100]浮点数

^-?(100|1?\d{1,2}(\.\d+)?)$

8.约束输入[100,-100]浮点数,保留2位

^-?(100|1?\d{1,2}(\.\d{1,2})?)$

9.经典范围:[-180,180],保留两位,浮点数

^-?(180|1?[0-7]?\d(\.\d{1,2})|[1-9]?\d(\.\d{1,2})?)$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值