Sto cercando di utilizzare questa regex (JS):Regex per rimuovere multilinea commenta
/\/\*(.*)\*\//g
Per sostituire
/*
sdandsads
*/
con niente.
Ma non funziona! Perché? o_O
Sto cercando di utilizzare questa regex (JS):Regex per rimuovere multilinea commenta
/\/\*(.*)\*\//g
Per sostituire
/*
sdandsads
*/
con niente.
Ma non funziona! Perché? o_O
il punto cattura tutto tranne a capo .. (se il dotall è falso)
quindi o utilizzare il dotall (come detto in altre risposte/commenti non è supportato in JavaScript, ma lo farò lasciarla qui per riferimento)
/\/\*(.*)\*\//gs
o aggiungere i caratteri spazi bianchi \s
nelle vostre espressioni
/\/\*((\s|.)*?)\*\//g
Alan menzionato nel suo commento una cattiva performance della risposta che ho dato in modo da utilizzare il seguente invece .. (che si traduce in tutto gli spazi e tutto ciò non gli spazi bianchi, in modo tutto ..)
/\/\*([\s\S]*?)\*\//g
due problemi:
[^]
.Soluzione:
/\/\*[^]*?\*\//g
Esempio:
> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
+1, modificato per non ingordo. –
Non funziona con commenti annidati. Prova: '/ * abc/* xyz */def/*'. La natura non avida fa sì che corrisponda al 1 ° commento di inizio con il 1 ° commento finale, e poi c'è solo 'def
I commenti nidificati non sono ammessi in questo modo. Quello interiore terminerà quello esterno. – InfinitiesLoop
Non c'è modo di 's' (linea singola) in JavaScript, e' (. \ S |) 'campi backtracking catastrofica. Il modo standard per abbinare qualsiasi cosa, incluse le nuove in JS è '[\ S \ s]'. –
@alan, qualsiasi link relativo al backtracking di '\ s | .'? Vorrei saperne di più ... –
Erik Corry lo ha spiegato bene qui: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8/2408599#2408599 Per una discussione più generale sul backtracking catastrofico , vedi http://www.regular-expressions.info/catastrophic.html –