为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 正则表达式惰性模式的一个问题?

Javascript 正则表达式惰性模式的一个问题?

正则表达式惰性模式,表示如果表达式能匹配成功前提下,会尽可能的少匹配字符。根据字面意思理解,看我如下代码var pattern=/a(\w*?)/;  var str='a123a';  console.log(str.replace(pattern,'$1'));我预期输出的是 '1',因为惰性模式,匹配一个字符就可以使之匹配成功可实际输出的是 '123a',与贪婪模式输出一摸一样这是为什么?
查看完整描述

2 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

*表示匹配0到多次,所以最少匹配0个字符,因为是惰性匹配,所以匹配一个空字符串,也就是/a(\w*?)//a/是等价的;
$1表示第一个分组的内容,所以$1恒等于空字符串;
因此,str.replace(pattern, '$1')等价于str.replace(/a/, ''),也就是把字符串中的第一个a替换成空字符串;注意/a/并不是全局匹配,所以只替换了第一个a;如果想替换所有的a,需要把pattern设置成全局匹配pattern = /a(\w*?)/g

查看完整回答
反对 回复 2019-04-04
?
绝地无双

TA贡献1946条经验 获得超4个赞

$1匹配的是第一个() 也就是分组中的匹配内容

w表明匹配所有字符串 后面的表示出现0或者任意次 ?比如do 可以匹配do或者doo 既然a后面有值那么就全匹配上了


查看完整回答
反对 回复 2019-04-04
  • 2 回答
  • 0 关注
  • 469 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信