Quiero insertar algo justo antes de "prueba", uso esta expresión regular y esperaba que devolvería una nueva línea pero devuelve "h", por lo que si inserto con el método de reemplazo, en realidad no insertaría antes de "prueba" como quiero: ¿dónde está el ¿error?
https://jsfiddle.net/y4qh629a/
const test = ` blah blah test blah blah`; const regex = /[^"]\s*(?=test)/; const match = test.match(regex); alert(match)La clase de caracteres negados [^"] consume un solo carácter que no sea un carácter " , en este ejemplo es el carácter h .
Si desea agregar algo antes de la coincidencia, puede usar reemplazar en su lugar o combinar el valor devuelto por la coincidencia (tenga en cuenta que la coincidencia devuelve una matriz y que la const test no se puede sobrescribir)
En este caso, puede capturar la coincidencia completa usando. En el reemplazo, use la coincidencia completa usando $& .
Tenga en cuenta que debe haber al menos un solo carácter además de " presente, que también puede ser un carácter de espacio en blanco.
const test = ` blah blah test blah blah`; console.log(test.replace(/[^"]\s*(?=test)/, "$&[replacement]")); Si también desea hacer coincidir la test al comienzo de la cadena:
const test = `test here blah blah test blah blah`; console.log(test.replace(/(?:^|[^"])\s*(?=test)/g, "$&[replacement]"));Use una mirada negativa hacia atrás en su lugar:
(?!<=")\s*(?=test) const test = ` blah blah test blah blah`; const regex = /(?!<=")\s*(?=test)/; const match = test.match(regex); console.log(match)