使用正则表达式限制QLineEdit不能输入大于某个整数,即:使用正则表达式,匹配不大于某个整数

举例:匹配不大于4567

* 原理分析:

  • 匹配不大于4567这个数,所以第一个想到的是只要小于4567就都匹配,小于4567不能直接匹配,但是可以匹配小于四位数的整数,也就是说只要是三位数就都可以匹配,那大于四位数的当然是完全不匹配了,正则表达式可以写做:
[0-9]
[0-9][0-9]
[0-9][0-9][0-9]
  • 现在就只剩下四位数,四位数就需要细分了,首先从它的千位也就是第一位看起,不大于4567,那么第一位当然是不能大于4,所以只要第一位不大于4 的整数就都匹配,正则表达式写做:
[0-3][0-9][0-9][0-9]
  • 四位数的第一位解决了,那么就是第二位数了,第二位数不大于5,但是前提是前面的第一位数正好是4,所以第一位正好是4、第二位不大于5,后两位无论是什么都匹配,正则表达式写做:
4[0-4][0-9][0-9]
  • 以此类推,第三位不大于6,第四位不大于7,正则表达式分别写做:
45[0-6][0-9]
456[0-7]
  • 最后一种情况:正好是4567,正则表达式直接写做:
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));

使用正则表达式限制<kbd>QLineEdit</kbd>不能输入大于某个整数的更多相关文章

  1. 限制QLineEdit的数值输入范围(一共4种限制器:QDoubleValidator, QIntValidator, QRegExpValidator, 和QRegularExpressionValidator)

    在使用QLineEdit输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-90,90],经度值范围[-180,180],方位角范围[0,360].Qt提供了QIntValidator和Q ...

  2. C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位

    使用js正则表达式,让文本框只能输入数字和字母,最大长度5位,只需要加个onkeyup事件,即可简单实现 <asp:TextBox ID="txtBegin" runat=& ...

  3. Vue input 控件: 通过自定义指令(directive)使用正则表达式限制input控件的输入

    前言: 网站中的input输入框使用非常广泛,因业务场景不同需要对输入框做合法性校验或限制输入,比如电话号码.邮件.区号.身份证号等.input框的不合法内容主要有两种方式处理:1.用户输入内容后,通 ...

  4. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)

    1057: 输入两个整数,求他们相除的余数 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 136[Submit][Status ...

  5. 【编程题目】输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数, 使其和等于 m ... ★

    第 21 题(数组)2010 年中兴面试题编程求解:输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来. 我的思路: 从小 ...

  6. 输入n个整数,输出其中最小的k个

    描述 输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsigned ...

  7. 输入n行整数,每行的个数不确定,整数之间用逗号分隔

    /*===================================== 输入n行整数,每行的个数不确定. 每行内部两个数之间用逗号隔开. 例如输入数据如下: 6 1,3,5,23,6,8,14 ...

  8. 排序,求几个最值问题,输入n个整数,输出其中最小的k个元素。

    看完两个求最大值算法之后的一些感想. 如果想直接看算法的可以跳过.但是我觉得我这些想法还是比较有用的,至少对我将来的算法设计是这样的. 算法的功能越强大,必然意味着速度慢,因为根据丛林法则,那种慢又功 ...

  9. 输入三个整数x、y、z,请把这三个数由小到大输出

    题目:输入三个整数x,y,z,请把这三个数由小到大输出. 程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y则将x与y的值进行交换,然后再用x与z进行比较,如果x> ...

随机推荐

  1. Ubuntu安装Docker(官方文档翻译)

    翻译自Docker官方文档 https://docs.docker.com/engine/installation/linux/ubuntulinux/ 之前因为看不懂官方文档,卡在某个步骤无法完成安 ...

  2. Python网络爬虫四大选择器用法原理总结

    前几天小编连续写了四篇关于Python选择器的文章,分别用正则表达式.BeautifulSoup.Xpath.CSS选择器分别抓取京东网的商品信息.今天小编来给大家总结一下这四个选择器,让大家更加深刻 ...

  3. jmeter零散知识点

  4. 大一寒假我在一个oj网站只刷了这些题从此入门了绝大部分通用算法

    如果你想入门算法,那么我这篇文章也许可以帮到你. 先说点题外话.这是在一个不冷不热的寒假,照理来说寒假应该很冷,但这个寒假是真的舒服.这样舒服的寒假学习似乎是一件不可能的事情,所以我继续我的游戏生涯, ...

  5. Android 文件存储浅析

    最近做的一个需求和文件存储有关系.由于之前没有系统梳理过,对文件存储方面的知识一直很懵懂.趁着周末有时间,赶紧梳理一波. 这首从网上找到的一张图,很好的概括了外部存储和内部存储. 下面我们再来具体介绍 ...

  6. 想学Python不知道从哪里开始学?|百度网盘免费下载| 这本入门书了解下

    百度网盘免费下载:编程小白的第一本 Python 入门书 提取码:s0pc Python是什么 Python是一种计算机程序设计语言,由吉多·范罗苏姆创造,第一版发布于1991年,可以视之为一种改良的 ...

  7. Intellij IDEA 快速查找接口实现类的快捷键

    查找接口的实现类: IDEA 风格 ctrl + alt +B 在按F2查看详细文档注解 查看类或接口的继承关系: ctrl + h

  8. JavaScript动画实例:运动的字母特效

    已知圆的坐标方程为: X=R*SIN(θ) Y=R*COS(θ)     (0≤θ≤2π) 给定初始坐标位置(X,Y),按照圆的坐标方程,从角度angle = 0开始,每间隔angleSpeed = ...

  9. 洛谷3月月赛div2 题解(模拟+数学+贪心+数学)

    由于本人太蒻了,div1的没有参加,胡乱写了写div2的代码就赶过来了. T1 苏联人 题目背景 题目名称是吸引你点进来的. 这是一道正常的题,和苏联没有任何关系. 题目描述 你在打 EE Round ...

  10. 改变对象的字符串显示__str__repr

    改变对象的字符串显示 # l=list('hello') # # print(l) # file=open('test.txt','w') # print(file) class Foo: def _ ...