QML 正则表达式 笔记

参考 <<Qt Quick 核心编程>>

在Qt C++ 中有QRegExp , 在QML中有RegExp,它们是对字符串执行模式匹配的强大工具.

两种构造正则表达式的方法

字面量语法: /pattern/attributes
创建RegExp对象: new RexExp(pattern, attributes)
在"/String/i"这个正则表达式中, String就是模式(pattern), i是修饰符,表示忽略大小写.这个正则表达式的意思就是忽略大小写地匹配String这个单词.
这里简单介绍修饰符元字符重复(量词)字符转义字符集合等常见的正则表达式组成元素。

var str = new String("I\'m a string");
str.match(/String/i);
str.search(new RegExp("String","i"));
str.search(RegExp("String","i"));

(1)修饰符

QML中可以使用的修饰符有3个

i  //匹配时忽略大小写
g  //查找所有匹配而非在找到第一个匹配后停止,即全局匹配
m  //执行多匹配

(2)元字符

元字符是拥有特殊含义的字符,常用元字符如下:

.   //匹配处换行以外的任意字符
\w  //匹配字母、数字、下划线或汉字
\s	//匹配任意的空白符
\S	//匹配非空白字符
\d	//匹配数字
\D	//匹配非数字字符
\b	//匹配单词的开始或结束
^	//匹配字符串的开始
$	//匹配字符串的结束

(3)重复

下面是正则表达式中常用的量词,可以使用它们匹配重复。

*		//重复0次或多次
+		//重复1次或多次
?		//重复0次或1次
{n}		//重复n次
{n,}	//重复n次或多次
{n,m}	//重复n到m次

(4)字符集合

匹配没有预定义元字符的字符集合时,需要用到字符集。
只需要在[ ] 中列出它们就行了,例如[xyz]匹配x、y、z中的一个。
也可以指定一个字符范围 [0-9] 代表的含义与\d一样,[a-zA-Z]表示26×2个大小写字母

(5)转义字符

有时你可能想匹配”*“或"." , 因为他们被作为元字符使用,所以这里要转义 使用"*“或”.“即可。
要查找”“本身,使用”\"

最后说明: String类的search()、match()、replace()、split()这四个方法支持正则表达式。

综合使用实例

模式"\d+“中,\d是元字符,表示查找数字, + 是量词,表示重复一次或多次.
那么”\d+"的意思就是匹配一个或多个连续的数字.

下面这个例子中,使用g来进行全局匹配, “/\d+/g”

var numberSource = new String("2020-07-03, I got 96");
var results = numberSource.match(/\d+/g);

匹配西安市电话,添加对“(029)nnnnnnnn"、"(029)nnnnnnnn"这两种形式的支持,可以使用下面的正则表达式

[(]?029[)]?\d{8}/mg“
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值