JavaScript正则表达式贪婪模式与惰性模式

本文详细介绍了JavaScript正则表达式中的贪婪模式与惰性模式的区别及应用场景,包括各种元字符的匹配规则,并通过具体实例展示了两种模式如何影响匹配结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript正则表达式贪婪模式与惰性模式

元字符/元符号匹配规则例子结果
?匹配出现0次或1次 /a?/.test('abcd');true
+匹配出现1次或多次/a+/.test('aaaaaaaa');true
*匹配出现0次或1次或多次/a*/.test('bbbbb');true
{n}匹配刚好出现n次/a{5}/.test('aaaab');false
{n,m}匹配最少出现n次最多出现m次/a{1,3}/.test('aaabbb');true
{n,}匹配最少出现n次/a{3,}/.test('aabbb');false

贪婪模式:匹配尽可能多的字符

贪婪量词 ?+*{n}{n,m}{n,}
首先比对整个字符串是否匹配,如果匹配不成功则去掉字符串最后一个字符再继续进行匹配,以此类推直到匹配成功或不剩字符才停止。

var str = '0a123ba123ba123';
var pattern = /a[a-b0-9]*b/;
pattern.test(str);

//工作过程如下:
pattern.test('0a123ba123ba123'); //false  首先比对整个字符串,如果不匹配,删除最后一个字符3继续匹配
pattern.test('0a123ba123ba12');  //false  如果不匹配,删除最后一个字符2再继续匹配
...
pattern.test('0a123ba123b');     //true   匹配成功,停止工作

惰性模式:匹配尽可能少的字符

惰性量词 ??+?*?{n}?{n,m}?{n,}?
首先从字符串第一个字符开始匹配,如果匹配成功则停止匹配,否则加入第二个字符继续匹配,依此类推直到匹配成功或不剩字符才停止。

var str = '0a123ba123ba123';
var pattern = /a[a-b0-9]*?b/;
pattern.test(str);

//工作过程如下:
pattern.test('0'); //false  首先比对第一个字符,如果不匹配,加入第二个字符a继续匹配
pattern.test('0a');  //false  如果不匹配,加入第三个字符1再继续匹配
...
pattern.test('0a123b');     //true   匹配成功,停止工作

模式比对:

模式表达式例子结果
贪婪/a[a-b0-9]*b/ '0a123ba123b'.match(/a[a-b0-9]*b/);["a123ba123b"]
惰性/a[a-b0-9]*?b/ '0a123ba123b'.match(/a[a-b0-9]*?b/);["a123b"]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值