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。
那么为什么会发生如图所示的情况呢?
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。
那么为什么会发生如图所示的情况呢?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这是因为你的正则
^.*$
在你的文本中,多行模式下匹配到的第一个结果是一个位置,由于此时的lastIndex是0,下次开始还是从这个位置匹配,因此又匹配到了这个位置。你如果把正则改为^.+$
,就正常了,因为这个正则不会匹配位置