2010-08-05 20 views
13

que tiene esta cadena:gama hace de expresiones regulares

{example1}{example2}{example3} 

Ésta es la expresión regular para encontrar estos {anything in it}:

/\{.*?\}/g 

Ahora quieren saber cómo ponerlos en una matriz de modo Puedo hacer una declaración for in.

Quiero una matriz algo así como array("{example1}","{example2}","{example3}");?

+2

Si tiene una matriz real, sería mucho mejor usar un simple bucle 'for' en lugar de un' for ... in', que le puede dar más de lo que esperaba: todas las extensiones de El prototipo de 'Array' aparecerá en la lista, así como los elementos en la matriz. –

+0

No debe iterar matrices con 'for-in'. Utilice un bucle 'for' de estilo C, preferiblemente. – strager

Respuesta

10
var matches = '{example1}{example2}{example3}'.match(/\{.*?\}/g); 
// ['{example1}', '{example2}', '{example3}'] 

See it here.

Además, probablemente debería utilizar un bucle for para recorrer la matriz. for in puede tener efectos secundarios, como la recopilación de más elementos para iterar a través de la cadena de prototipos. Puede usar hasOwnProperty(), pero un bucle for es mucho más fácil.

Para el rendimiento, también puede almacenar en caché la propiedad length antes de incluirla en la condición for.

+0

nice, este es un ejemplo del que puede aprender :) –

+0

hm dice "Última vez votó esta respuesta hace 9 horas Su voto ahora está bloqueado a menos que se edite esta respuesta" –