Javascript exec()方法从不使用certains regex返回null

Javascript exec()方法从不使用certains regex返回null,javascript,Javascript,例如,我想使用“^”元字符获取字符串的第一个字符。 这将导致以下代码崩溃,因为exec从不返回null。 有没有一种方法可以让它在不改变正则表达式的情况下工作?至少没有撞车 const regexp = /^/g; const str = 'Lorem ipsum'; let regexMatches = []; while ((matches = regexp.exec(str)) !== null) { regexMatches.push({str: matches[0], ind

例如,我想使用“^”元字符获取字符串的第一个字符。 这将导致以下代码崩溃,因为exec从不返回null。 有没有一种方法可以让它在不改变正则表达式的情况下工作?至少没有撞车

const regexp = /^/g;
const str = 'Lorem ipsum';
let regexMatches = [];

 while ((matches = regexp.exec(str)) !== null) {
   regexMatches.push({str: matches[0], index: regexp.lastIndex});
 }
保存上一个匹配的最后一个索引。如果它没有改变,就打破循环

let prevIndex = -1;
while ((matches = regexp.exec(str)) !== null) {
    if (regexp.lastIndex == prevIndex) { // no movement
        break;
    }
    regexMatches.push({str: matches[0], index: regexp.lastIndex});
    prevIndex = regexp.lastIndex;
}

^与第一个字符不匹配!它匹配字符串或具有多行m修饰符的行的开头。修饰符也不会中断,而是前进一个位置。其他地方可能会有更多的比赛。