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;在传输层是有固定的传…

智能,轻量,高效的爬虫工具 (爬虫宝第一代), HSpider

场景 之前玩爬虫宝一时爽&#xff0c;但是我很快发现了一个致命的问题。就是chat3.5 有时候误判&#xff0c;Claude2 是遇到大一点的html就无法解析&#xff0c;chat4 Api没有申请下来&#xff0c;chat3.5 误判这个可以纠正&#xff0c;但是每次爬取花费的钱都是2刀以上&#…

springboot 查询

ServiceImpl中 getBaseMapper()的使用 public IPage<ProductPageVO> getProductPage(Integer regionOrCityCode, Integer brandId, LocalDate usedDate, Page<ProductPageVO> page) {return getBaseMapper().getProductPage(regionOrCityCode, brandId, usedDate, …

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

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

MacOS安装PHP5.6的Redis扩展

更多版本下载地址&#xff1a;https://pecl.php.net/package/redis 安装步骤 wget http://pecl.php.net/get/redis-2.2.7.tgztar -zxvf redis-2.2.7.tgzcd redis-2.2.7phpize./configure --with-php-config/usr/local//php/5.6.40/bin/php-configmake && make instal…

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

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

前端-部署配置前端项目时,关于env.development、env.production以及nginx.conf的关系

今天要打包前端项目生产镜像部署&#xff0c;学习到了关于env.development、env.production以及nginx.conf的关系 env.development 首先是env.development&#xff0c;这里面主要放的是我们本地开发时的代理服务器&#xff08;需要代理来解决跨域问题的话&#xff09; env.p…

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

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

离散傅立叶变换和线性变换的关系:什么是线性空间?

离散傅立叶变换和线性变换的关系&#xff1a;什么是线性空间&#xff1f; 本篇博客是在学习线性空间知识的时候联想到的&#xff0c;通过分析DFT背后的数学原理&#xff0c;以便更好地理解什么是线性空间、什么是线性变换。 1、离散傅立叶变换&#xff08;DFT&#xff09;和F…

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

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

Mac[M1]安装mongodb

要在Mac&#xff08;M1芯片&#xff09;上安装MongoDB&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff1a;你可以在“应用程序”文件夹中找到“终端”应用程序&#xff0c;或者使用Spotlight搜索并打开它。安装Homebrew&#xff1a;在终端中运行以下命令安…

帮我超越技术壁垒的“泰斗”服务--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-…

2024年测量、信号处理与深度学习国际会议(ICMSPDL 2024)

2024年测量、信号处理与深度学习国际会议&#xff08;ICMSPDL 2024&#xff09; 2024 International Conference on Measurement, Signal Processing, and Deep Learning ICMSPDL 2024是一个汇集行业和学术界的顶级论坛。会议将邀请国内外知名专家就信号处理、测量、深度学习方…

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

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

数据库基础面试第二弹

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

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

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

工作记录----CountDownLatch(特别好用的一个工具类)

CountDownLatch 是 Java 并发包中的一个同步工具类,它可以让一个或多个线程等待其他线程完成操作。它的核心思想是,一个线程(或多个线程)在执行某个任务时,可以通过它等待其他线程的信号,直到其他线程的任务完成才继续执行。用于实现线程间的等待和通知机制。 主要特点:…

前端常用的工具网站

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