No exercício, o código abaixo apresenta uma flag.
var exp = new RegExp('(\\d\\d)(\\w)', 'g');
O "g" é uma flag que significa global. Porque usamos então de um laço no exercício para encontrar os outros matchs??
No exercício, o código abaixo apresenta uma flag.
var exp = new RegExp('(\\d\\d)(\\w)', 'g');
O "g" é uma flag que significa global. Porque usamos então de um laço no exercício para encontrar os outros matchs??
Isso ocorre porque por padrão o regex do javascript para ao encontrar o primeiro caso. Por isso guarda a informacao do ultimo acontecimento no atributo lastIndex
. E na próxima busca comeca a buscar pelo lastIndex
. Se o flag nao for global, o resultado sempre será a primeira ocorrência.
Obs:
Um dos jeitos de usar uma regex no javascript é literal, sem atribuir a uma variavel:
/(\d\d)(\w)/g.exec('texto a ser testado 44h 22i');
Se fosse usada essa linha de codigo no loop while parecido com o apresentado no video, o loop nunca acabaria. Porque ja que o lastIndex nao esta sendo guardado nunca retornará null para sair no loop.
Fonte: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec