He encontrado estas expresiones regulares en otros lugares:
myString.replace(/^.*\//, ''); myString.replace(/\..*?$/, '');Mi pregunta es:
^ y ?$ tienen algún sentido aquí? Y mi interpretación es que ^ no es relevante, porque estamos usando .* que significa "cualquier cosa".
El segundo significa reemplazar desde el . cualquier carácter en modo perezoso hasta el final de la cadena. Que es lo mismo que nada.
Así que les escribiría:
myString.replace(/.*\//, ''); myString.replace(/\..*/, '');Pero no estoy 100% seguro ya que mi Regex es bastante básico. ¿Ideas?
De hecho, en la primera expresión regular, el ^ no es realmente necesario. El efecto es el mismo sin él.
Sin embargo, en la segunda expresión regular hay una diferencia cuando se omite el ? y el $ , porque . no coincide con los caracteres de nueva línea (a menos que agregue s como modificador).
Ver los diferentes resultados:
let myString = `.this is multiline`; console.log(myString.replace(/\..*?$/, '')); console.log(myString.replace(/\..*/, ''));Y mi interpretación es que ^ no es relevante, porque estamos usando .* que significa "cualquier cosa".
Sí, ese es el comienzo de la cadena, pero si quieres toda la cadena, no tiene relevancia. Además, vaya aquí para un gran patio de juegos de expresiones regulares.
¿^ y ?$ tienen algún sentido aquí?
Para responder a la segunda pregunta, para regex /\..*?$/ , ?$ no tiene sentido con * , b/cx* significa 0 o más de x y x? significa 0 o 1 (a menos que haya querido intencionalmente 0 o 1 de 0 o más, pero lo dude). Esto se toma directamente de la hoja de ayuda en regexr.com. 