Estoy tratando de encontrar las posiciones de todas las ocurrencias de una cadena en otra cadena, sin distinción entre mayúsculas y minúsculas.
Por ejemplo, dada la cadena:
Aprendí a tocar el ukelele en el Líbano.
y la cadena de búsqueda le
, quiero obtener la matriz:
[2, 25, 27, 33]
Ambas cadenas serán variables, es decir, no puedo codificar sus valores.
Pensé que esta era una tarea fácil para las expresiones regulares, pero después de luchar durante un tiempo para encontrar una que funcionara, no tuve suerte.
Encontré este ejemplo de cómo lograr esto usando .indexOf()
, pero seguramente tiene que haber una forma más concisa de hacerlo.
le
una cadena variable aquí? Incluso cuandonew Regexp(str);
se acecha el peligro de los caracteres especiales, la búsqueda,$2.50
por ejemplo. Algo asíregex = new Regexp(dynamicstring.replace(/([\\.+*?\\[^\\]$(){}=!<>|:])/g, '\\$1'));
sería más cercano en mi humilde opinión. No estoy seguro de si js tiene un mecanismo de escape de expresiones regulares incorporado.