Warum JavaScript-Replace nur die erste Instanz ersetzt: Erkunden des RegExp-Flags
Bei Verwendung der JavaScript-Ersetzungsmethode zum Suchen und Ersetzen einer Zeichenfolge durch eine andere , können Sie auf das Verhalten stoßen, bei dem nur die erste Instanz der Zielzeichenfolge ersetzt wird. Dieses Verhalten tritt auf, weil das Standardverhalten von Ersetzen darin besteht, einen einzelnen, nicht globalen Such- und Ersetzungsvorgang durchzuführen.
Globales Ersetzen: Das RegExp-Flag
Um alles zu ersetzen Instanzen einer Zielzeichenfolge in einer Zeichenfolge müssen Sie das „globale“ Flag (g) im regulären Ausdruck angeben, der in der Ersetzungsmethode verwendet wird. Dieses Flag gibt an, dass der Such- und Ersetzungsvorgang über die gesamte Zeichenfolge erfolgen und jedes Vorkommen der Zielzeichenfolge ersetzen soll.
Zum Beispiel in Ihrem Code:
var date = $('#Date').val(); // e.g., "12/31/2009"
var id = 'c_' date.replace("/", ''); // c_1231/2009 (wrong)
Um alle Vorkommen des „/“-Zeichens zu ersetzen, müssen Sie das „globale“ Flag angeben:
var id = 'c_' date.replace(new RegExp("/", "g"), ''); // c_12312009 (correct)
Alternativ können Sie die kürzere Syntax verwenden:
var id = 'c_' date.replace(/\//g, ''); // c_12312009 (correct)
Durch Angabe des „globalen“ Flags ersetzt die Ersetzungsmethode jedes Schrägstrichzeichen in der Datumszeichenfolge, was zu einer korrekten Ausgabe führt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3