regular - javascript regex example
JavaScript: ¿cómo usar una expresión regular para eliminar líneas en blanco de una cadena? (3)
Creo que esto funcionará
searchText.replace(/(^[ /t]*/n)/gm, "")
Necesito usar JavaScript para eliminar líneas en blanco en un cuadro de texto HTML. Las líneas en blanco pueden estar en cualquier parte del elemento textarea
. Una línea en blanco puede ser solo una devolución o espacios en blanco más devolución.
Estoy esperando una solución de expresión regular para esto. Aquí hay algunos que probé, pero no están funcionando y no pueden entender por qué:
/^/s*/r?/n/g
/^/s*/r?/n$/g
Editar 1
Parece que la solución (la modifiqué un poco) sugerida por aaronman y m.buettner funciona:
string.replace(/^/s*/n/gm, "")
¿Alguien puede decir por qué mi primera expresión regular no funciona?
Editar 2
Después de leer todas las respuestas útiles, se me ocurrió esto:
/^[/s/t]*(/r/n|/n|/r)/gm
¿Esto va a ser uno que cubra todas las situaciones?
Editar 3
Este es el más conciso que cubre todos los espacios (espacios en blanco, pestañas) y plataformas (Linux, Windows, Mac).
/^/s*[/r/n]/gm
Muchas gracias a m.buettner!
Esto debería hacer el truco, creo:
var el = document.getElementsByName("nameOfTextBox")[0];
el.value.replace(/(/r/n|/n|/r)/gm, "");
EDITAR: elimina tres tipos de saltos de línea.
Tu patrón parece correcto, solo necesitas incluir el modificador multilínea m
, de modo que comiences y finalices en ^
y $
match line también:
/^/s*/n/gm
Sin la m
, los anclajes solo coinciden con los comienzos y finales de las cuerdas.
Ten en cuenta que te pierdes los finales de línea de Mac (solo /r
). Esto ayudaría en ese caso:
/^/s*[/r/n]/gm
También tenga en cuenta que (en ambos casos) no es necesario que coincida con el /r
en frente del /n
explícitamente, porque eso es atendido por /s*
.
Como señaló Dex en un comentario, esto no borrará la última línea si solo consta de espacios (y no hay una línea nueva después de ella). Una forma de solucionar eso sería hacer que la nueva línea sea opcional, pero incluir un ancla de final de línea antes. En este caso , debe coincidir correctamente con el final de la línea:
/^/s*$(?:/r/n?|/n)/gm