quiero obtener todas las cadenas entre corchetes [] . probé el método de coincidencia de expresiones regulares y no funciona
solo cambio el primer elemento
aquí está mi código
tags = "[r,a,9]@[r,a,8].com".match(/([(?:[??[^[]*?]))/); for (let index = 0; index < tagNumber; index++) { console.log(tags[index]); fromName = "[r,a,9]@[r,a,8].com".replace(tags[index], "haha"); }/\[.+?\]/g
/ denota el comienzo del patrón
\[ coincide con el carácter [
.+? coincide con cualquier carácter, 1 o más veces, perezosamente
\] coincide con el carácter ]
/g indica el final del patrón y para encontrar TODAS las coincidencias
const input = "[r,a,9]@[r,a,8].com" const pattern = /\[.+?\]/g const tags = Array.from(input.match(pattern)) console.log(tags) const fromName = input.replace(pattern, "haha") console.log(fromName)Necesitas escapar [ y ] para unirlos literalmente. No hay necesidad de un grupo de captura alrededor de todo.
Agregue el modificador g para que coincida con todas las ocurrencias en la cadena.
tags = "[r,a,9]@[r,a,8].com".match(/\[[^[]*?\]/g); let tagNumber = tags.length; for (let index = 0; index < tagNumber; index++) { console.log(tags[index]); fromName = "[r,a,9]@[r,a,8].com".replace(tags[index], "haha"); console.log(fromName) } Puede usar una expresión regular en replace() para reemplazar todas las coincidencias a la vez.
fromName = "[r,a,9]@[r,a,8].com".replace(/\[[^[]*?\]/g, "haha"); console.log(fromName)