Estoy haciendo un cuadro de comentarios simple y quiero eliminar el exceso de espacios en blanco reemplazando el espacio en blanco con solo 1 o 2 tokens, ya sean líneas nuevas o espacios.
(\s){2,} es lo que tengo hasta ahora. Sin embargo, quiero dejar a los usuarios la capacidad de escribir a doble espacio sus comentarios, y reemplazar esto con $1 , el primer grupo de captura, reduciría sus líneas a un solo espacio.
Así que básicamente,
Si tengo 1 espacio o nueva línea, reemplácelo con 1 espacio o nueva línea.
Si tengo más de 1 espacios o saltos de línea, reemplácelos con exactamente 2 espacios o saltos de línea.
Gracias.
Puede reemplazar coincidencias de
(?<=\s)\s+/con un espacio
La expresión regular dice: "Coincide con uno o más caracteres de espacio en blanco que están precedidos por un carácter de espacio en blanco". (?<=\s) es una mirada positiva hacia atrás .
Tenga en cuenta que los caracteres a continuación marcados con '^' coinciden con la expresión regular y luego se reemplazan por un solo espacio:
Two spaces then three then four then five\n then none ^ ^^ ^^^ ^^^^Cuando las coincidencias se reemplazan por un espacio, la cadena se convierte en la siguiente.
Two spaces then three then four then five\n then noneObserve que el espacio que sigue al carácter de nueva línea es el primero de cuatro caracteres de espacio en blanco que coinciden.
text=document.getElemntById('comment_text_input').value while(text.indexOf('\n\n\n')!=-1||text.indexOf(' ')!=-1) { text=text.replaceAll('\n\n\n','\n\n') //it makes '\n\n\n\n\n\n' to '\n\n\n\n', the next round '\n\n\n' and finally '\n\n' text=text.replaceAll(' ',' ') // the same with the newlines } document.getElemntById('comment_text_input').value=textPuedes usar
.replace(/(\s{2})\s+/g, '$1')Detalles :
(\s{2}) - Grupo 1: dos caracteres de espacio en blanco\s+ - uno o más espacios en blanco.Vea la demostración de JavaScript:
const text = 'Abc 123\n DEF 234\n New line' console.log(text.replace(/(\s{2})\s+/g, '$1'));