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- ./?%&=]*)?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TypeScript学习笔记归纳(先做基础梳理,后期不断丰满,持续更新ing)

文章目录 前言 二、TypeScript的优势体现在哪里&#xff1f; 1、执行时间上的区别 2、基础数据类型区别 3、TS优势 三、TypeScript的关键特性 四、TypeScript的类型系统 1、什么是类型注释&#xff1f; 2、类型系统核心 - 常用类型 1&#xff09; 基本类型&#xff0…

计网03-数据的封装和解封装

数据封装和解封装的过程 实例&#xff1a;有两台电脑 PC&#xff11;和PC&#xff12;&#xff0c;PC1要给PC&#xff12;发送一个文本文件 1、数据的封装过程&#xff1a; 应用层&#xff1a;将原始数据转换成计算机能识别的二进制数传输层&#xff1a;在传输层是有固定的传…

为什么说依赖抽象就变得更加灵活呢?举例

说依赖抽象变得更加灵活的主要原因在于它提供了更大的替换和扩展的空间。让我们通过一个简单的例子来说明&#xff1a; 考虑一个电商系统&#xff0c;其中有一个OrderProcessor类负责处理订单&#xff0c;它依赖于一个PaymentGateway用于处理支付。最初的设计可能如下所示&…

LabVIEW进行激光斑点图像处理与分析

LabVIEW进行激光斑点图像处理与分析 近年来&#xff0c;激光技术的应用日益繁荣。激光光斑的质量评估和分析技术决定了应用效果&#xff0c;对机器视觉、武器装备、光学测量和医疗设备产生深远影响。就具体用途和技术而言&#xff0c;激光光斑的采集和处理至关重要。即插即用的…

渗透测试 | php的webshell绕过方法总结

目录 1.php的异或运算 2.通过获取注释去绕过 3.利用字符的运算符​​​​​​​ 4.通过end函数代替[] 5.通过常量去绕过 6.字符串拼接双美元符 7.通过函数定义绕过 8.通过类定义&#xff0c;然后传参分割 9.多传参方式绕过​​​​​​​ 10.通过get_defined_function…

使用Maven Archetype插件制作项目脚手架(一)

Archetype是一个Maven项目模板工具包。通过Archetype我们可以快速搭建Maven项目。比如我们在ide里面创建项目时&#xff0c;可以选择很多maven内置的Archetype&#xff0c;我们最常用的可能是maven-archetype-quickstart 当然maven提供了能力&#xff0c;让我们自定义项目结构&…

帮我超越技术壁垒的“泰斗”服务--Amazon ElastiCache

前言 作为开发者&#xff0c;外加上云服务的使用者&#xff0c;对于借助云服务来提升日常开发中的效率是一个非常关键且重要的事情。在日常实际开发中&#xff0c;关于缓存服务领域想必作为开发者应该都不陌生&#xff0c;比如常用到的 Redis 就是缓存服务之一。对于互联网领域…

使用ffmpeg实现视频旋转并保持清晰度不变

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 ffmpeg -i source.mp4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable-…

Gin框架之使用 go-ini 加载.ini 配置文件

首先,联想一个问题,我们在部署服务时,通常为了方便,对于需要迭代更新的代码进行修改,但是比对shell,可以搞一个变量将需要修改的,以及修改起来变动处多的,写在变量内,到时候如果需要变更,可以直接变更变量即可; 那么,golang有没有什么方式可以将需要变的东西保存起…

数据库基础面试第二弹

1. 乐观锁和悲观锁的理解及使用 乐观锁和悲观锁是在并发编程中使用的两种并发控制机制&#xff0c;用于解决多线程或多进程环境下的数据一致性问题。 1. 悲观锁&#xff08;Pessimistic Locking&#xff09;&#xff1a;   悲观锁的思想是假设并发访问会导致冲突&#xff0…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏&#xff0c;它和扫雷在经典小游戏这方面可以说是旗鼓相当&#xff0c;它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式&#xff0c;后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是&#xff1a;用游戏把子上下左右控…

前端常用的工具网站

前端常用的工具网站&#x1f516; 文章目录 前端常用的工具网站&#x1f516;1. 图片在线压缩2. iconfont--矢量图标3. JSON在线格式化4. EMOJIALL--表情符号5. removebg--去除图片背景6. FREE API--免费API接口7. Lorem picsum --随机图片8.UU在线工具 -- 聚合工具 1. 图片在线…

生活服务网站搭建的作用是什么

如今生活服务商家面临获客、信息展示及多渠道传播信息的难题&#xff0c;传统线下形式如街道发传单、人口相传等形式非常低效&#xff0c;容易投入成本得不到回报&#xff0c;且数据难以统计。 互联网时代&#xff0c;线上渠道平台汇聚亿级流量&#xff0c;生活服务商家也需要一…

C++ std::string使用效率优化

字符串操作是任何一个C开发程序无法绕过的点&#xff0c;很多时候针对字符串的操作需要进行优化&#xff0c;从而达到更优的使用效率和内存利用率。一般会采用标准的std::string替代C字符串&#xff0c;一方面是std::string为一个成熟的类对象&#xff0c;其成员操作基本能满足…

什么是“私域流量”?

公域流量&#xff0c;字面意思就是人人都可以用的流量&#xff0c;但要付出一定成本&#xff0c;而且不一定可持续。 具体到实际对象&#xff0c;则是线下流量以及BAT等几个互联网流量大户&#xff0c;尤其是后者&#xff0c;比如微信、QQ、天猫、淘宝、百度、抖音、快手、微博…

vue-awesome-swiper轮播组件

安装版本&#xff1a;"swiper": "^6.0.0", 安装版本&#xff1a;"vue-awesome-swiper": "^4.1.1", <div class"swiper_conter"><swiper class"swiper" :options"swiperOption" ref"mySw…

算法leetcode|94. 二叉树的中序遍历(多语言实现)

文章目录 94. 二叉树的中序遍历&#xff1a;样例 1&#xff1a;样例 2&#xff1a;样例 3&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 94. 二叉树的中序遍历&#xff1a; …

Spring高手之路-Spring AOP

目录 什么是AOP Spring AOP有如下概念 补充&#xff1a; AOP是如何实现的 Spring AOP 是通过代理模式实现的。 Spring AOP默认使用标准的JDK动态代理进行AOP代理。 什么是AOP AOP(Aspect-Oriented Programming)&#xff0c;即面向切面编程&#xff0c;用人话说就是把公共的…

开发人工智能 需要什么工具

人工智能&#xff08;Artificial Intelligence, AI&#xff09;是指利用计算机模拟、扩展和延伸人类智能的理论、方法、技术和应用系统的一门学科。人工智能研究的目标是使计算机能够像人类一样具有智能&#xff0c;能够感知和理解环境、学习和推理、决策和规划&#xff0c;具备…

jar 运行清单文件MANIFEST.MF生成定义Main-Class Premain-Class IDEA maven-assembly-plugin

可运行jar文件中的启动清单文件 META-INF/MANIFEST.MF 内容自定义生成 清单文件中的 Main-Class: Premain-Class: Can-Retransform-Classes: 在maven-assembly-plugin插件中的生成配置如下, 注意命名 <archive> <manifest> <mainClass>c…