2009-09-29 35 views
21

Devo restituire solo il testo contenuto tra parentesi quadre in una stringa. Ho la seguente espressione regolare, ma questo restituisce anche le parentesi quadre:Javascript - Restituisce la stringa tra parentesi quadre

var matched = mystring.match("\\[.*]"); 

Una stringa sarà sempre e solo contenere una serie di parentesi quadre, ad esempio:

Some text with [some important info] 

io voglio abbinato a contenere 'alcuni importanti info ', piuttosto che' [alcune informazioni importanti] 'attualmente ottengo.

risposta

58

Usa raggruppamento. Ho aggiunto uno ? per rendere l'abbinamento "ungreedy", in quanto probabilmente è ciò che desideri.

2

Hai provato parentesi cattura:

("\\[(.*)]"); 

Ciò dovrebbe restituire il modello all'interno delle parentesi come un fiammifero catturato nella matrice restituita

0

Non è possibile. Javascript non supporta i lookbehind.

Dovrai utilizzare un gruppo di cattura o tagliare le parentesi.

A proposito, probabilmente non vuoi un avido .* nella tua espressione regolare. Prova questo:

"\\[.*?]" 

O meglio, questo:

"\\[[^\\]]*]" 
9

Poiché javascript non supporta le acquisizioni, è necessario modificarlo. Considera questa alternativa che prende l'approccio opposto. Piuttosto che catturare ciò che è all'interno delle parentesi, rimuovere ciò che è al di fuori di loro. Dal momento che ci sarà sempre un solo set di parentesi, dovrebbe funzionare bene. Di solito uso questa tecnica per spogliare gli spazi bianchi iniziali e finali.

mystring.replace(/(^.*\[|\].*$)/g, ''); 
+0

Aggiungendo il) alla fine se c'è una nuova riga dopo di essa. –

Problemi correlati