Tengo algunos problemas para descubrir la forma correcta de codificar mi expresión regular. Básicamente, quiero insertar saltos de línea duros ( <br> ) en una cadena. Digamos que quiero que la longitud máxima de la línea sea de 10 caracteres. Quiero insertar un <br> en el espacio más cercano antes del carácter 11 y justo antes del carácter 11 si la línea actual no tiene espacios dentro de sus 10 caracteres. Si la última línea tiene menos de 10 caracteres, no hacemos nada.
Ejemplo: Hello there, my name is Bob -> Hello <br>there, my <br>name is <br>Bob
Ejemplo: HelloThereMyName -> HelloThere<br>MyName
Mi expresión regular actual es:
x.replace(/[\s\S]{1,10}(?!\S)/g, '$&<br>')Para los datos de ejemplo y el resultado deseado, puede hacer coincidir 10 veces cualquier carácter, excepto una nueva línea seguida de un espacio, o hacer coincidir 10 caracteres que no sean espacios en blanco.
En el reemplazo, puede usar la coincidencia completa $& seguida de <br>
Tenga en cuenta que en su patrón [\s\S] coincide con cualquier carácter, incluida una nueva línea. El uso de (?!\S) afirmará un límite de espacio en blanco a la derecha y no coincidirá con el último espacio, si lo hay.
.{1,10} |\S{10}Ver una demostración de egex
Por ejemplo
const regex = /.{1,10} |\S{10}/g; const str = `Hello there, my name is Bob HelloThereMyName nothing name is Bob`; console.log(str.replace(regex, `$&<br>`));