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

javascript的正则表达式的问题

javascript的正则表达式的问题

12345678_0001 2018-10-05 10:15:24
var msg=/[a-z]+/gundefinedmsg.test('dfdfdf')truemsg.test('dfdfdf')falsemsg.test('dfdfdf')true问什么一时返回真一时返回假呢
查看完整描述

1 回答

?
繁星coding

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

因为题主多次测试都是使用同一个字符串字面量'dfdfdf'
而在JavaScript中, 正则表达式的g标志有记录lastIndex的功能1
所以第一次test记录了lastIndex'dfdfdf'字符串的末尾, 导致第二次test的结果为false
并且第二次test由于遍历了'dfdfdf'字符串的末尾(也就是完整地遍历了整个字符串对象里面的内容), 
所以lastIndex指针又重新指向了字符串开头, 然后重新循环.

所以问题中的测试会是以truefalsetruefalse的结果交替出现, 如下所示:

https://img1.sycdn.imooc.com//5be290b6000176b001450230.jpg

  1. MDN-JavaScript 正则表达式 


查看完整回答
反对 回复 2018-11-07
  • 1 回答
  • 0 关注
  • 526 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号