2010-02-12 10 views
6

¿Hay alguna forma más corta de escribir esto?JavaScript Regex Compile()

var needed = /\$\[\w+\]/mi; 
needed.compile(/\$\[\w+\]/mi); 

¿Por qué tengo que pasar el patrón de nuevo en la expresión regular cuando ya he declarado en la primera línea ?!

+0

¿Qué te hace pensar que haces? –

+1

Si no vuelvo a incluir el patrón, la expresión regular tarda aproximadamente el doble. – JamesBrownIsDead

Respuesta

7

Hay dos formas de definir expresiones regulares en JavaScript: una a través de un constructor de objetos y otra a través de un literal. El objeto se puede cambiar en tiempo de ejecución, pero el literal se compila al cargar el script y proporciona un mejor rendimiento.

var txt=new RegExp(pattern,modifiers); 

o más simplemente:

var txt=/pattern/modifiers; 

Ésta es la misma cosa que cobbai está diciendo. En resumen, no tienes que hacer ambas cosas.

2

de MDC:

La notación literal proporciona compilación de la expresión regular cuando la expresión se evalúa

así /\$\[\w+\]/mi es una expresión regular ya compilado.