"foo\r\nbar".replace(/(foo).+/m, "bar")
Hola. No puedo entender por qué este código no pretende sustituir foo en la barra dejavascript multilínea regexp reemplazar
"foo\r\nbar".replace(/(foo).+/m, "bar")
Hola. No puedo entender por qué este código no pretende sustituir foo en la barra dejavascript multilínea regexp reemplazar
No puedo entender por qué este código no pretende sustituir foo en la barra de
Debido a que el punto .
hace explícita caracteres de nueva línea no partidos .
Esto funcionaría:
"foo\r\nbar".replace(/foo[\s\S]+/m, "bar")
ya que los caracteres de nueva línea cuentan como un espacio en blanco (\s
).
Tenga en cuenta que los paréntesis alrededor de foo
son superfluos, la agrupación no tiene beneficios aquí.
JavaScript no admite un modificador punto-todo. Un reemplazo común es:
"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar")
/m
hace ^
y $
se comportan correctamente, pero no tiene efecto sobre .
.
Great.Thank –
Gracias, no sabía. En ruby lo hace por defecto. –
No, no lo hace. ;) (Pruébalo en http://rubular.com/) – Tomalak
'[\ s \ S]' es una solución mucho mejor que '(?:. | \ S)'; ver la respuesta de Erik Corry a esta pregunta por la razón: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 –