使用正则表达式限制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. github 新功能 profile README.md

    引 自从github被微软收购后,每天都会有一些新花样,ui变化,界面变化,更多的功能,相信这个它会越来越好,程序员越来越喜欢.今天浏览大佬的github 无意中发现了 github profile ...

  2. 放弃dagger?Anrdoi依赖注入框架koin

    Koin 是什么 Koin 是为 Kotlin 开发者提供的一个实用型轻量级依赖注入框架,采用纯 Kotlin 语言编写而成,仅使用功能解析,无代理.无代码生成.无反射. 官网地址 优势 依赖注入好处 ...

  3. nginx配置多个图片访问路径

    需求:vue项目打包的时候 会将项目中的一些图片打包到/dist/static/images下,但是有时候会有一些很大的图片,需要单独存放至别的文件夹比如/home/di-img下,不能被打倒包内.部 ...

  4. phpMyAdmin历史漏洞复现

    简介 phpMyAdmin是一个非常受欢迎的基于web的MySQL数据库管理工具.它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增字段,执行SQL脚本等 复现三个古老漏洞 phpMyAd ...

  5. 记一次抓包和破解App接口

    目录 第一章 · 起源 第二章 · 尝试 第三章 · 脱狱 第四章 · 柳暗花明 第五章 · 终结 第一章 · 起源 某日,想做个爬虫工具,爬某个网站上的数据已做实验之用.大家都知道爬pc网页上的数据 ...

  6. C# 13位时间戳(unix时间戳)

    1.转义字符用在中间. "\"' 2.C#获取13位时间戳(unix时间戳) /// <summary>   /// 将c# DateTime时间格式转换为Unix时间 ...

  7. Android TV 键盘样式开发

    布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=& ...

  8. reverse 字符串翻转

    头文件 algorithm string s="hello"; reverse(s.begin(),s.end()); char c[]="hello"; re ...

  9. PHP mysqli_thread_id() 函数

    返回当前连接的线程 ID,然后杀死连接: <?php 高佣联盟 www.cgewang.com // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli ...

  10. Skill 如何Flatten一个list

    https://www.cnblogs.com/yeungchie/ code unless(fboundp('ycFlattenList) procedure(ycFlattenList(listi ...