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

const str = `

dasd djsai hf cdu

dja cjsi aerhu chdu

xia deji cjxi asj

`;

const reg = /^.*$/gm;

reg.exec(str);

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

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

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

回答

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

以上是 Js中正则表达式 多行模式下的疑问 的全部内容, 来源链接: utcz.com/a/40105.html

回到顶部