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

news2025/4/21 23:51:27

在使用 输入数值时,经常遇到限制其范围的需要,比如角太阳高度角范围为[-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.coloradmin.cn/o/1346152.html

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

相关文章

Python武器库开发-武器库篇之Git的分支使用(三十九)

武器库篇之Git的分支使用(三十九) Git分支是一种用于在项目中并行开发和管理代码的功能。分支允许开发人员在不干扰主要代码的情况下创建新的代码版本&#xff0c;以便尝试新功能、修复错误或独立开发功能。一般正常情况下&#xff0c;开发人员开发一个软件&#xff0c;会有两…

C#语言发展历程(1-7)

一、类型发展 C#1中是没有泛型的 在C#2中在逐渐推出泛型。C#2还引入了可空类型。 示例&#xff1a;C#泛型&#xff08;详解&#xff09;-CSDN博客 1 C#3&#xff1a;引入了匿名类型、和隐式的局部变量&#xff08;var&#xff09; 匿名类型&#xff1a;我们主要是使用在LIN…

蓝桥杯C/C++程序设计——日期统计

问题描述 小蓝现在有一个长度为 100100 的数组&#xff0c;数组中的每个元素的值都在 00 到 99 的范围之内。数组中的元素从左至右如下所示&#xff1a; 现在他想要从这个数组中寻找一些满足以下条件的子序列&#xff1a; 子序列的长度为 88&#xff1b;这个子序列可以按照下…

【数据结构】栈和队列(栈的基本操作和基础知识)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 目录 前言 栈 栈的概念和结构 栈的实现 ​…

Python+OpenGL绘制3D模型(九)完善插件功能: 矩阵,材质,法线

系列文章 一、逆向工程 Sketchup 逆向工程&#xff08;一&#xff09;破解.skp文件数据结构 Sketchup 逆向工程&#xff08;二&#xff09;分析三维模型数据结构 Sketchup 逆向工程&#xff08;三&#xff09;软件逆向工程从何处入手 Sketchup 逆向工程&#xff08;四&#xf…

结构体:搜索链表

#include<iostream> #include<iomanip> using namespace std; struct Student //创建结构体Student {int number; //学号char name[20]; //姓名float Chinese, Math, English; //成绩语数英Student* next; //下一个节点 }; Student* CreateList() //创建链表 {Stud…

Pytorch的讲解及实战·MNIST数据集手写数字识别

目录 一、前言与pytorch的下载 1、前言 2、下载pytorch ①创建虚拟环境 ②下载pytorch&#xff08;cpu版&#xff09; ③测试pytorch是否下载成功 ④使用jupyter notebook 但是使用不了torch的解决方法 二、pytorch的使用 1、Tensor的数据类型 ①torch.FloatTensor …

【网络安全 | Misc】a_good_idea

正文 使用winhex看到有zip压缩包&#xff1a; 改后缀&#xff1a; 得到两张图&#xff0c;txt中写道&#xff1a;寻找像素的秘密 使用stegsolve将合并两张图并进行像素相减&#xff1a; 再将该图进行转换色道&#xff1a; 扫描二维码得到flag&#xff1a;

计算机网络【HTTP 灵魂拷问?】

1. HTTP 报文结构是怎样的&#xff1f; 对于 TCP 而言&#xff0c;在传输的时候分为两个部分:TCP头和数据部分。 而 HTTP 类似&#xff0c;也是header body的结构&#xff0c;具体而言: 起始行 头部 空行 实体由于 http 请求报文和响应报文是有一定区别&#xff0c;因此…

【基础】【Python网络爬虫】【4.requests入门】(附大量案例代码)(建议收藏)

Python网络爬虫基础 requests 入门1. 请求方法&#xff08;Method&#xff09;2. GET与POST方法3. 简单爬虫4. url地址构成url的概念url的组成部分案例 - 添加请求头发送 5. 查看请求体6.查看响应体案例 - 某厨房首页数据爬取&#xff08;UA检测&#xff09; 7. 设置响应体编码…

uni-app uni-app内置组件

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

Vue2【插槽】

目录 1&#xff1a;插槽-默认插槽&#xff1a; 2&#xff1a;插槽-具名插槽 &#xff1a; 3&#xff1a;插槽-作用域插槽&#xff1a; 总结&#xff1a;2023再见&#xff0c;2024再见&#xff01;&#xff01;&#xff01; 1&#xff1a;插槽-默认插槽&#xff1a; 作用&a…

【neo4j】简单使用

【neo4j】简单使用 创建节点 需要建立一个symmap中医数据集的节点&#xff0c;从csv中读取数据 下面是herb的数据 将该文件放在import中 将xlsx文件转换为csv LOAD CSV WITH HEADERS FROM "file:///herb.csv" AS line CREATE (:herb {name:line.Chinese_name,p…

线上发布稳定性方案介绍

目录 一、方案说明 二、线上发布问题描述 2.1 无损上下线背景说明 2.1.1 服务⽆法及时下线 2.1.2 初始化慢 2.1.3 注册太早 2.1.4 发布态与运⾏态未对⻬ 三、问题解决方案 3.1 无损下线方案 3.1.1 什么是无损下线 3.1.2 传统解决方式 3.1.3 云原生场景解决方案 3.1…

在macOS中搭建.NET MAUI开发环境

文章目录 准备安装扩展安装 .NET安装工作负载安装 Xcode 命令行工具调试安卓应用安装 JDK安装 Android SDK 安装 Android 模拟器安装模拟器安装镜像创建虚拟机 同意许可条款创建 MAUI 项目调试 MAUI 应用切换调试目标 参考资料 准备 一台 macOS Monterey 以上的电脑安装 XCode…

FileZilla的安装与使用

文章目录 一、FileZilla简介1.1 FileZilla概述1.2 FileZilla 的优点1.3 FileZilla 的应用场景 二、搭建FileZilla服务器2.1 下载2.2 安装服务端2.3 新建组2.4 新建用户2.5 新建目录2.6 权限分配2.7 安装客户端2.8 FilaZilla远程连接 三、主被动模式 一、FileZilla简介 1.1 Fil…

【SpringCloud】从实际业务问题出发去分析Eureka-Server端源码

文章目录 前言1.EnableEurekaServer2.初始化缓存3.jersey应用程序构建3.1注册jeseryFilter3.2构建JerseyApplication 4.处理注册请求5.registry&#xff08;&#xff09; 前言 前段时间遇到了一个业务问题就是k8s滚动发布Eureka微服务的过程中接口会有很多告警&#xff0c;当时…

STM32入门教程-2023版【3-2】使用库函数点亮GPIO灯

关注 点赞 不错过精彩内容 大家好&#xff0c;我是硬核王同学&#xff0c;最近在做免费的嵌入式知识分享&#xff0c;帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 二、正式点亮一个LED灯 &#xff08;3&#xff09;使用库函数点亮GPIO灯 RCC初始化 首先用的是&…

【Java | 多线程案例】定时器的实现

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 这里写…

“推荐大战:抖音vs.快手”——背后的秘密全揭晓!

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的小伙伴。最近在面试的时候遇到了一个非常有趣的问题&#xff0c;也是很多人关心的话题——字节跳动产品面试题&#xff1a;说一下抖音和快手的推荐策略有什么不同&#xff1f;今天&#xff0c;就让我们一起来揭开这…