Próbuję użyć tego wyrażenia regularnego (JS):Regex do usuwania wielu linii komentuje
/\/\*(.*)\*\//g
Aby wymienić
/*
sdandsads
*/
z niczym.
Ale to nie działa! Czemu? o_O
Próbuję użyć tego wyrażenia regularnego (JS):Regex do usuwania wielu linii komentuje
/\/\*(.*)\*\//g
Aby wymienić
/*
sdandsads
*/
z niczym.
Ale to nie działa! Czemu? o_O
kropka łapie wszystko poza nowymi liniami .. (jeśli dotall jest fałszywy)
więc albo użyć dotall (jak wspomniano w innych odpowiedzi/komentarze to nie jest obsługiwane w javascript, ale będę zostawić go tutaj dla odniesienia)
/\/\*(.*)\*\//gs
lub dodać białe znaki znaki \s
w swoich wyrażeń
/\/\*((\s|.)*?)\*\//g
Alan wspomniał w swoim komentarzu złą wydajność z odpowiedzią Dałem więc używać następujących zamiast .. (co przekłada się wszystkiego spacje i wszystko bez spacji, więc wszystko ..)
/\/\*([\s\S]*?)\*\//g
dwa problemy:
[^]
.Rozwiązanie:
/\/\*[^]*?\*\//g
Przykład:
> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
+1, zmieniony na nie chciwy .. –
Nie działa z zagnieżdżonymi komentarzami. Spróbuj: "/ * abc/* xyz */def/*". Nienagiczna natura sprawia, że pasuje do pierwszego komentarza początkowego z komentarzem do pierwszego końca, a następnie pozostaje tylko "def
Nigdy nie myśl, zagnieżdżone komentarze nie są faktycznie dozwolone w ten sposób. Ta wewnętrzna zakończy zewnętrzną. – InfinitiesLoop
Jest tryb nie 's' (pojedyncza linia) w JavaScript, a' (. \ S |) 'sądy katastrofalne wycofywania. Standardowy sposób na dopasowanie wszystkiego - w tym - nowe linie w JS to '[\ S \ s]'. –
@alan, wszelkie linki dotyczące powrotu '\ s | .'? chciałbym dowiedzieć się więcej na ten temat .. –
Erik Corry wyjaśnił to dobrze tutaj: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8/2408599#2408599 Dla bardziej ogólnej dyskusji o katastroficznym cofaniu , zobacz http://www.regular-expressions.info/catastrophic.html –