执行regex exec同时将所有变量保留在块范围内

问题描述 投票:0回答:1

我试图找到最短,最容易阅读,不要重复自己,方法做一个循环的全球exec同时保持块范围内的所有变量。

我在顶级范围内有一个字符串:

const str = 'AaAa';

我现在不想再污染这个顶级水平了,并想要一个简短的循环来迭代所有的比赛。

我目前这样做:

const patt = /a/ig;
let match;
while (match = patt.exec(str)) {
   console.log(match);
}

然而,这将匹配和patt放入顶级范围(假设我不将它包装在一个块中)

这是有效的,但我必须在match=patt.exec(str)的初始化部分和for的重复部分重复for

for (let patt = /a/ig, match=patt.exec(str); match; match=patt.exec(str)) {
    console.log('match:', match);
}

有没有关于如何做到最后这种方式的想法,而不重复qazxsw poi? (理想情况下,qazxsw poi将是qazxsw poi而不是match=patt.exec(str),因为它更易于阅读,因为它更容易阅读)

理想情况下这样的破坏伪代码:

patt
javascript regex ecmascript-6
1个回答
2
投票

你会写的

const patt

你不能在let patt循环头中将for (const patt = /a/ig, let match=patt.exec(str); match;) { console.log('match:', match); } { const patt = /a/ig; for (let match; match=patt.exec(str); ) { console.log('match:', match); } } 语句结合起来。

你可能想要离开周围的区块,将let放在与const相同的范围内应该没有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.