1
resposta

Flag do JS

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??

1 resposta

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