2010-08-05 16 views
13

Ho questa stringa:Fare matrice da regex

{example1}{example2}{example3} 

Questa è l'espressione regolare per trovare questi {anything in it}:

/\{.*?\}/g 

ora voglio sapere come metterli in un array così Posso fare una dichiarazione for in.

Voglio un array qualcosa come array("{example1}","{example2}","{example3}");?

+2

Se hai una matrice effettiva, starai molto meglio usando un semplice ciclo 'for' piuttosto che un' for ... in', che potrebbe darti più di quanto hai puntato: tutte le estensioni per Il prototipo di 'Array' sarà elencato, così come gli elementi nell'array. –

+0

Non dovresti iterare gli array con 'for-in'. Usare preferibilmente un ciclo 'for' in stile C. – strager

risposta

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

See it here.

Inoltre, è consigliabile utilizzare un ciclo for per eseguire l'iterazione attraverso l'array. for in può avere effetti collaterali, come la raccolta di più elementi per scorrere la catena del prototipo. È possibile utilizzare hasOwnProperty(), ma un ciclo for è molto più semplice.

Per prestazioni, è inoltre possibile memorizzare nella cache la proprietà length prima di includerla nella condizione for.

+0

bello, questo è un esempio che può imparare da :) –

+0

hm dice "Hai votato per l'ultima volta questa risposta 9 ore fa Ora il tuo voto è bloccato a meno che questa risposta non sia stata modificata" –