Js中正则表达式 多行模式下的疑问

const str = `
dasd djsai hf cdu
dja cjsi aerhu chdu
xia deji cjxi asj
`;
const reg = /^.*$/gm;
reg.exec(str);

重复执行reg.exec(str)都是返回一个结果
image

按照我的理解,.不匹配换行符,应该依次输出dasd djsai hf cdu、dja cjsi aerhu chdu、xia deji cjxi asj。

那么为什么会发生如图所示的情况呢?

阅读 1.4k
1 个回答

这是因为你的正则^.*$在你的文本中,多行模式下匹配到的第一个结果是一个位置,由于此时的lastIndex是0,下次开始还是从这个位置匹配,因此又匹配到了这个位置。你如果把正则改为^.+$,就正常了,因为这个正则不会匹配位置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题