Qt中正则表达式QRegExp使用

Qt的一些限制正则表达式


RegExp是Qt的正则表达式类.
Qt中有两个不同类的正则表达式.
第一类为元字符.它表示一个或多个常量表达式.
令一类为 转义字符,它代表一个特殊字符.

 

一.元字符
. 匹配任意单个字符.                      例如, 1.3 可能是1. 后面跟任意字符,再跟3
^ 匹配字符串首.                             例如, ^12可能是123,但不能是312
$ 匹配字符串尾.                            例如, 12$可以是312, 当不能是 123
[] 匹配括号内输入的任意字符.    例如[123]可以为1, 2 或3
* 匹配任意数量的前导字符.         例如, 1*2可以为任意数量个1(甚至没有), 后面跟一个2
+ 匹配至少一个前导字符.             例如, 1+2必须为一个或多个1, 后跟一个2
? 匹配一个前导字符或为空.         例如 1?2可以为2或12

二.统配模式
通过 QRegExp::setPatternSyntax(QRegExp::Wildcard);可以将元字符设置为统配模式.在统配模式下,只有3个元字符可以使用.他们的功能没有变化.
? 匹配任意单个字符,             例如, 1?2可以为1,后面跟任意单个字符, 再跟2
* 匹配任意一个字符序列.      例如, 1*2, 可以为1, 后面跟任意数量的字符, 再跟一个2
[] 匹配一个定义的字符集合. 例如, [a-zA-Z\.]可以匹配 a到z之间任意一个字符和. [^a]匹配出小写a以外的字符.

 

三.转义序列
\.  匹配 "."
\^  匹配 "^"
\$ 匹配 "$"
\[  匹配 "["
\]  匹配 "]"
\*  匹配 "*"
\+ 匹配 "+"
\? 匹配 "?"
\b 匹配 响铃字符,使计算机发出嘟的一声.
\t  匹配 制表符号
\n 匹配 换行符号
\r  匹配 回车符

\s 匹配 任意空格
\xnn 匹配 16进制为nn的字符
\0nn 匹配 8进制的nn字符
这些表达式均以\开始, 与C++的转义字符相同,所以为了定义QRegExp中的一个转义序列,
需要在前面添加\\

 

一、以下字符在Qt的正则表达式的含义
0|[1-9]\\d{0,4} --> 0-99999
on_\w+_\w+      --> 表示任意符合qt规则的槽函数
T[\d]{3}
例子    解释
[abc]    方括号中间是几个字母,表示a,b,c这三个字符中的某个字符
[^abc]    除了a,b,c以外的某个字符
[a-z]    横杠表示范围,匹配a到z之间(包括a和z)的所有单个字符
[a-zA-Z]    a到z、A到Z的所有单个字符
^    在一行最前
$    在一行的最后
\s    匹配任意空白字符
\S    匹配任意非空白的字符
\d    任意数字
\D    任意非数字
\w    任意单字字符(字母、数字或下划线)
\W    任意非单字字符
(a|b)    a或b
a?    ?代表0个或1个
a*    *代表0个或1个或多个
a+    +代表1个或多个
a{3}    3个a
a{3,}    3个或大于3个a
a{3,6}    a的个数在3和6之间(包括3和6)

一些常用的表达式:

^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入数字:“^[0-9]*$”
只能输入n位的数字:“^d{n}$”
只能输入至少n位数字:“^d{n,}$”
只能输入m-n位的数字:“^d{m,n}$”
只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
只能输入非零的正整数:“^+?[1-9][0-9]*$”
只能输入非零的负整数:“^-[1-9][0-9]*$”
只能输入长度为3的字符:“^.{3}$”
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。
验证是否含有^%&'',;=?$"等字符:“[^%&'',;=?$x22]+”
只能输入汉字:“^[u4e00-u9fa5],{0,}$”
验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”
验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
验证身份证号(15位或18位数字):“^d{15}|d{}18$”
验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”
正确格式为:“01”“09”和“1”“31”。
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
匹配空行的正则表达式:n[s| ]*r
匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/
匹配首尾空格的正则表达式:(^s*)|(s*$)
匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

 

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值