当前位置: 首页 > news >正文

QT 输入框输入限制 正则表达式限制 整理

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

1.只允许输入字母和汉字:

QRegExp regExp;regExp.setPattern("[a-zA-Z0-9_\u4e00-\u9fa5\\w]+$");QValidator * editName = new QRegExpValidator(regExp,ui->lineEdit);ui->lineEdit->setValidator(editName);ui->lineEdit->setMaxLength(10);

2.正则表达式限制 只允许输入 浮点数

QRegExp rx("^(-?[0]|-?[1-9][0-9]{0,5})(?:\\.\\d{1,4})?$|(^\\t?$)");
3.使用正则表达式限制只能输入数字
QRegExp rx("[0-9\.]+$"); 
QRegExpValidator *validator = new QRegExpValidator(rx, this); 
ui->lineEdit->setValidator(validator);
4.使用正则表达式限制只能输入IP地址
QRegExp rx = QRegExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){4}"); 
QRegExpValidator *validator = new QRegExpValidator(rx, this); ui->lineEdit->setValidator(validator); 
ui->lineEdit->setInputMask("000.000.000.000");

5.  限制 输入 值范围,此类直接限制不接收数字以外的输入,setRange设置接收范围

QDoubleValidator * pDouVld = new QDoubleValidator(this);pDouVld->setRange(0,1000000000000000000);ui->lePort->setValidator(pDouVld);

6.只要字符数字

QRegExpValidator *validator2 = new QRegExpValidator(QRegExp("[A-Za-z0-9]*"), this);ui->leId->setValidator(validator2);

7.整理常用 正则表达式

^(-?[0]|-?[1-9][0-9]{0,5})(?:\.\d{1,4})?$|(^\t?$)(^-?180$)|(^-?1[0-7]\d$)|(^-?[1-9]\d$)|(^-?[1-9]$)|^0$^-?(180|1?[0-7]?\d(\.\d+)?)$^-?(180|1?[0-7]?\d(\.\d{1,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"是一个转义字符,表示匹配一位数字;
6.  “\.” 表示匹配小数点;
7.  "\d+",这里面的+表示其前面的\d重复一次或多次;
8.  "\d{1,4}",里面的{1,4}表示重复1到4次;

8. 正则表达式语法:

 :匹配任何单个字符。例如正则表达式“b.g”能匹配如下字符串:“big”、“bug”、“b g”,但是不匹配“buug”,“b..g”可以匹配“buug”。 [ ] :匹配括号中的任何一个字符。例如正则表达式“b[aui]g”匹配bug、big和bag,但是不匹配beg、baug。可以在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0-9]可以匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就可以匹配“a0c”、“a1c”、“a2c”等字符串;还可以制定多个区间,例如“[A-Za-z]”可以匹配任何大小写字母,“[A-Za-z0-9]”可以匹配任何的大小写字母或者数字。( ) :将 () 之间括起来的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候非常有用。把一些字符表示为一个整体。改变优先级、定义提取组两个作用。| :将两个匹配条件进行逻辑“或”运算。'z|food' 能匹配"z" 或 "food"。'(z|f)ood' 则匹配"zood" 或 "food"。*:匹配0至多个在它之前的子表达式,和通配符*没关系。例如正则表达式“zo*”能匹配 “z” 、“zo”以及 “zoo”;因此“.*”意味着能够匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。+ :匹配前面的子表达式一次或多次,和*对比(0到多次)。例如正则表达式9+匹配9、99、999等。 “zo+”能匹配 “zo”以及 “zoo” ,不能匹配"z"。? :匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或"does" 。一般用来匹配“可选部分”。{n} :匹配确定的 n 次。"zo{2}"→zoo。例如,“e{2}” 不能匹配“bed”中的“e”,但是能匹配“seed”中的两个“e”。{n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的所有“e”。{n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”将匹配“seeeeeeeed”中的前三个“e”。^(shift+6) :匹配一行的开始。例如正则表达式“^regex”能够匹配字符串“regex我会用”的开始,但是不能匹配“我会用regex”。^另外一种意思:非!(暂时不用理解)$ :匹配行结束符。例如正则表达式“浮云$” 能够匹配字符串“一切都是浮云”的末尾,但是不能匹配字符串“浮云呀”\d:代表一个数字,等同于[0-9]\D:代表非数字,等同于[^0-9]\s:代表换行符、Tab制表符等空白字符\S:代表非空白字符\w:匹配字母或数字或下划线或汉字,即能组成单词的字符\W:非\w ,等同于[^\w]d:digital;s:space、w:word。大写就是“非”Regex.IsMatch("bbbbg","^b.*g$");Regex.IsMatch("bg","^b.*g $ ");Regex.IsMatch("gege","^b.*g $ ");"^\d{3,4}\-?\d+$"表示被匹配的字符序列应该是由三至四位数字组成,由于长途区号的连字符“-”可有可无,所以这里使用“?”元字符进行说明。由于连字符“-”在正则表达式中有特殊含义(表示范围,比如[0-9]),所以要对其进行转义。[]括号中的任意字符,\w字母、数字、下划线,+一到多个。由于.在正则表达式中有特殊的含义,因此对于真正想表达“.”则需要转移“\.”。先想正则表达式是语言无关的。+、*的匹配默认是贪婪(greedy)的:尽可能多的匹配,直到“再贪婪一点儿”其后的匹配模式就没法匹配为止。在+、*后添加?就变成非贪婪模式(? 的另外一个用途):让其后的匹配模式尽早的匹配。修改成"我是(.+?)。"图片src[^>]*[^/].(?:jpg|bmp|gif)(?:\"|\')中文 ^([\u4e00-\u9fa5]+|[a-zA-Z0-9]+)$网址"\<a.+?href=['""](?!http\:\/\/)(?!mailto\:)(?>foundAnchor>[^'"">]+?)[^>]*?\>"匹配中文字符的正则表达式:[\u4e00-\u9fa5]匹配双字节字符(包括汉字在内):[^\x00-\xff]匹配空行的正则表达式:\n[\s|]*\r匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/匹配首尾空格的正则表达式:(^\s*)|(\s*$)(像vbscript那样的trim函数)匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

相关文章:

  • Midjourney v6 正式发布,AI创新工坊同步更新
  • 与擎创科技共建一体化“数智”运维体系,实现数字化转型
  • 在k8s中将gitlab-runner的运行pod调度到指定节点
  • 【学习笔记】Java函数式编程03 Stream流-终结操作
  • 在ajax中使用callback
  • CNVD原创漏洞审核和处理流程
  • Python in Visual Studio Code 2023年12月发布
  • 基于 Linux 的批量上传本地 Git 仓库到 Github 的实践
  • Dash中的callback的使用 多input 6
  • 人工智能_机器学习078_聚类算法_概念介绍_聚类升维_降维_各类聚类算法_有监督机器学习_无监督机器学习---人工智能工作笔记0118
  • 个性化定制的知识付费小程序,为用户提供个性化的知识服务,知识付费saas租户平台
  • Maven 项目依赖仓库配置详解:pom.xml 中的 repositories 与 Maven 配置文件的调用顺序
  • 13.鸿蒙HarmonyOS App(JAVA)文本框组件按钮点击提示
  • ARCGIS PRO SDK GeometryEngine处理独立几何图形的函数
  • 40G多模光模块QSFP-40G-SR4优势及应用领域介绍
  • 【347天】每日项目总结系列085(2018.01.18)
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • eclipse(luna)创建web工程
  • E-HPC支持多队列管理和自动伸缩
  • go语言学习初探(一)
  • GraphQL学习过程应该是这样的
  • Java反射-动态类加载和重新加载
  • JS专题之继承
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 半理解系列--Promise的进化史
  • 多线程事务回滚
  • 聚类分析——Kmeans
  • 深入浅出Node.js
  • 使用 QuickBI 搭建酷炫可视化分析
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 栈实现走出迷宫(C++)
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • ​力扣解法汇总946-验证栈序列
  • !!java web学习笔记(一到五)
  • #laravel 通过手动安装依赖PHPExcel#
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (11)MSP430F5529 定时器B
  • (39)STM32——FLASH闪存
  • (70min)字节暑假实习二面(已挂)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (转)scrum常见工具列表
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ******之网络***——物理***
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET 解决重复提交问题
  • .net 流——流的类型体系简单介绍
  • .Net8 Blazor 尝鲜
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .ui文件相关
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)