em Uncategorized

Expressão Regular com variável no Javascript

Nesta sábado estava com um problema para fazer uma magia negra com NodeJS, precisava manipular um texto que seria publicado com código parecido com BBCode para identificar a posição de elementos (parecidos com widgets) que deveriam ser substituídos de acordo com seu tipo.

Para isso, precisava identificar o padrão [#tipo_id], como poderiam ser vários tipos de componentes (e como sempre o sistema pode crescer e novos tipos serem adicionados) a melhor forma de trabalhar com isso seria uma expressão regular com uma variável.

Antes eu tinha o seguinte:

var er = new RegExp(/\[#img_.*?\]/g);
var results = minhastring.match(er);

O que eu precisava era que o #img fosse uma variável para que esta rotina de busca e replace pudesse ser transformada em uma função parametrizada, o resultado final:

var er = new RegExp('\\['+ busca +'.*?\\]', 'g');

A sugestão do @knorrium em uma consultoria rápida pelo Twitter e sem saber exatamente o que eu precisava foi o uso do eval(), testei e funcionou, mas esta modo diferente de uso do new RegExp com dois parâmetros string que o @manuWell sugeriu ficou mais elegante. 

E você, como faria uma Regexp com variável no javascript?

Escreva um comentário

Comentário