js正则贪婪模式_js 正则表达式问题 贪婪与非贪婪

展开全部

1)为什么只得到一32313133353236313431303231363533e58685e5aeb931333363396364个结果?

因为模式/(aa)+?/g可以匹配aa,aaa,aaaa...,因为输入串只有3个a,而正则表达式引擎的搜索模式是由左往右搜索,若匹配到一次后,下次将紧接上一次成功匹配后的下一个位置起,因为上一次成功的位置第2个a,所以第二次匹配时,将从第3个a开始,由于只有一个a,所以不满足子表达(aa)。所以只得到一个结果。

2)为什么没有输出["aa","aa"]这样的结果呢?

原因:见上。

3)如何才能得到["aa","aa"]这样的结果呢?请写出代码?

如上分析,可以再加一个a。即var str = 'aaaa';

var reg = /(aa)+?/g;

var results = str.match(reg);

for (var x in results) alert('index='+x+',value='+results[x]);

如果想体现贪婪与非贪婪效果,可以这样做:// 贪婪模式

var str = 'aaaa';

var reg = /a+/g;

var results = str.match(reg);

// 返回1个搜索结果,结果为所有的a

for (var x in results) alert('index='+x+',value='+results[x]);// 非贪婪模式

var str = 'aaaa';

var reg = /a+?/g;

var results = str.match(reg);

// 返回4个搜索结果,每个结果均为a

for (var x in results) alert('index='+x+',value='+results[x]);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值