QT正则表达式

在一些文本框输入的时候呢,需要进行验证一些内容,看用户输入的内容是否符和规范,这时候呢就需要用到正则表达式啦,正则表达式用在一下的几个方面:
正则表达式是验证输入、从输入中提取数据以及对输入进行搜索和替换的强大工具,所谓正则表达式,regexp是一种利用模式匹配语言来描述字符串组成限制条件的方式;Qt 提供了一个QRegExp类,它实现了Perl风格的扩展正则表达式语言的大部分功能
1、 验证:测试一个字符是否符合规范,例如输入密码框输入的是否数字
2、 搜索:就是某些字符串是否都可以匹配在一起
3、 查找替换:顾名思义就是查找字符串的位置和替换某个字符串
4、 分割:在字符串中的某个位置进行分割
正则表达式是由表达式(expressions)、量词(quantifiers)、断言(assertions)组成的。最简单的就是匹配一个字符啦,
以下列出几个比较简单的栗子:

QRegExp reg("\\d");//匹配数字
    qDebug()<<reg.indexIn("a");//返回-1
    qDebug()<<reg.indexIn("a1");//返回1
    reg.setPattern("\\b(hello|world)\\b");//匹配hello或者wrold单词
    qDebug()<<reg.indexIn("helloworld");//返回-1
    qDebug()<<reg.indexIn("my world");//返回3
    reg.setPattern("sister");
    QString str = "this is sister";
    str.replace(reg,"brother");//替换,使用brother替换sister
qDebug()<<str;//输出为this is brother

这里使用了QRegexp的indexIn()函数,它是从指定位置开始向后对字符串进行匹配,默认式从字符串开始进行匹配,如果匹配成功,就返回第一匹配到的位置的索引,如果失败就返回-1.

以下为输出结果
在这里插入图片描述

QRegExp类还只通配符(Qildcard)匹配,很多命令都支持文件通配符,可以使用通配符来识别一组文件,QRegExp的setPatternSyntax()函数可以用来在regexp和通配符间进行切换,他有四个功能

字符 含义
c 任意一个字符,表示字符本身
? 匹配任意一个字符

  • 匹配0个或多个任意字符
    […] 在方括号中的字符集

如果要匹配所有.txt类型的文件,就可以添加一下代码来实现:

QRegExp reg("*.txt");
    reg.setPatternSyntax(QRegExp::Wildcard);
    qDebug()<<reg.exactMatch("TEXT.txt");//结果为true
qDebug()<<reg.exactMatch("TEXT.txt.bat");//结果为false

除了通配符外,QRegExp还支持其他的一些语法,这些语法都可以使用setPatternSyntax()函数来切换:

在这里插入图片描述
常用的表达式:
[0-9]//可以输入0到9这几个数字
[A-Za-z]//输入任意英文的常规写法
[]//有标记时,方框内不能输入,例如[^abc]就不能输入"a",“b”,“c”。
{}/跟在[]后,表示正则限制,例如[0-9]{19},则只能输入19位数字,[0-9]{2,9},
则能输入2位到9位数字,如果你想输入一个可以转换成double的数字,可以表示为
/
[0-9]{1,}[.]{1}[0-9]{1,}//其中,类似{1,}的表达表示大于1位数,不设上限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值