"foo\r\nbar".replace(/(foo).+/m, "bar")
Hallo. Ich kann nicht verstehen, warum dieser Code foo ersetzt nicht auf barJavascript multiline regexp ersetzen
"foo\r\nbar".replace(/(foo).+/m, "bar")
Hallo. Ich kann nicht verstehen, warum dieser Code foo ersetzt nicht auf barJavascript multiline regexp ersetzen
Ich kann nicht verstehen, warum dieser Code nicht foo auf bar
ersetzt Weil .
der Punkt explizit nicht Spiel Zeilenumbrüche tut .
funktionieren würde diese:
"foo\r\nbar".replace(/foo[\s\S]+/m, "bar")
weil Zeilenumbrüche als Leerzeichen zählen (\s
).
Beachten Sie, dass die Klammern um foo
überflüssig sind, Gruppierung hat hier keine Vorteile.
JavaScript unterstützt keinen Modifikator für alle Punkte. Ein gemeinsamer Ersatz ist:
"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar")
/m
^
und $
verhalten macht richtig, aber hat keine Auswirkung auf .
.
Great.thank you –
Danke, ich wusste es nicht. In Ruby tut es standardmäßig. –
Nein, tut es nicht. ;) (Testen Sie selbst unter http://rubular.com/) – Tomalak
'[\ s \ S]' ist eine viel bessere Umgehungsmöglichkeit als '(?:. | \ S)'; siehe Erik Corry's Antwort auf diese Frage aus folgendem Grund: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 –