Tengo esta expresión regular (?<![\n])[\n]{1}(?![\n]) en mi código Javascript y, según tengo entendido, Safari simplemente no es compatible con las miradas negativas.
Lo que debo hacer es reemplazar todos los \n que no están rodeados por otros \n y reemplazarlos con una cadena.
¿Puede alguien ayudarme a descubrir cómo escribir ese Regex para que se pueda usar en Safari?
Gracias.
Puede capturar el inicio de la cadena o un carácter que no sea un espacio en blanco en el grupo 1.
Luego haga coincidir una sola nueva línea y no afirme una nueva línea a la derecha.
En el reemplazo, use el grupo de captura seguido de su cadena de reemplazo $1[replacement]
Tenga en cuenta que no necesita los corchetes alrededor de la nueva línea y puede omitir {1}
(\S|^)\n(?!\n)Demostración de expresiones regulares
const regex = /(\S|^)\n(?!\n)/g; const str = ` this is a this is b this is c d test test test test `; const result = str.replace(regex,`$1[replacement]`); console.log(result);Su patrón con el lookbehind (si es compatible):
const regex = /(?<!\n)\n(?!\n)/g; const str = ` this is a this is b this is c d test test test test `; `[replacement]` const result = str.replace(regex,`[replacement]`); console.log(result);Usar
text.replace(/(\n)?\n(?!\n)/g, function(p,q) { return q === undefined ? "<a string>":p })Código JS:
var text = "a\nb\n\nc" console.log( text.replace(/(\n)?\n(?!\n)/g, function(p,q) { return q === undefined ? "<a string>":p }))