Estoy tratando de utilizar esta expresión regular (JS):expresión regular para eliminar la línea de múltiples comenta
/\/\*(.*)\*\//g
Para reemplazar
/*
sdandsads
*/
sin nada.
¡Pero no funciona! ¿Por qué? o_O
Estoy tratando de utilizar esta expresión regular (JS):expresión regular para eliminar la línea de múltiples comenta
/\/\*(.*)\*\//g
Para reemplazar
/*
sdandsads
*/
sin nada.
¡Pero no funciona! ¿Por qué? o_O
el punto atrapa todo, excepto los saltos de línea .. (si el dotall es falsa)
así que o bien utilice el dotall (como se ha mencionado en otras respuestas/comentarios esto no es compatible con JavaScript, pero lo haré dejarlo aquí por referencia)
/\/\*(.*)\*\//gs
o añadir los caracteres de espacio en blanco \s
en sus expresiones
/\/\*((\s|.)*?)\*\//g
Alan mencionado en su comentario una mala actuación de la respuesta que he dado a fin de utilizar la siguiente vez .. (que se traduce en todo espacio en blanco y todo sin espacios en blanco, por lo que todo ..)
/\/\*([\s\S]*?)\*\//g
dos problemas:
[^]
.Solución:
/\/\*[^]*?\*\//g
Ejemplo:
> '/*abc\ncde*/qqq/*iop\n\njj*/'.replace(/\/\*[^]*?\*\//g, '')
qqq
+1, modificado para no codicioso .. –
No funciona con comentarios anidados. Pruebe: '/ * abc/* xyz */def/*'. La naturaleza no codiciosa hace que coincida con el primer comentario de inicio con el comentario del 1er final, y luego solo queda 'def
Nunca se preocupe, los comentarios anidados no están permitidos de esa manera. El interior terminará el exterior. – InfinitiesLoop
No hay modo de 's' (una línea) en JavaScript, y' (. \ S |) 'tribunales retroceso catastrófico. La forma estándar de hacer coincidir cualquier cosa, incluidas las nuevas líneas en JS, es '[\ S \ s]'. –
@alan, ¿algún enlace sobre el seguimiento '' s | .'? me gustaría aprender más al respecto ... –
Erik Corry lo explicó bien aquí: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8/2408599#2408599 Para una discusión más general de retroceso catastrófico , vea http://www.regular-expressions.info/catastrophic.html –