function someFunction(site)
{
// If the var has a trailing slash (like site2),
// remove it and return the site without the trailing slash
return no_trailing_slash_url;
}
Wie mache ich das?
Mögliches Duplikat von JQuery prüfen und Schrägstrich vom Ende der gelesenen URL entfernen
– Hugo
29. Januar 2014 um 8:17 Uhr
Versuche dies:
function someFunction(site)
{
return site.replace(/\/$/, "");
}
Um Fälle mit mehreren nachgestellten Schrägstrichen zu behandeln, können Sie Folgendes verwenden: return site.replace(/\/+$/, "");
– Mikermcneil
21. Februar 2012 um 18:48 Uhr
“/”.replace(/\/$/, “”) wird zu “”. “/” ist ein gültiger Pfad und sollte nicht entfernt werden.
– Puchu
19. Juli 2016 um 16:15 Uhr
Sei vorsichtig mit /\/+$/, was in einem Kommentar hier steht, der zum Zeitpunkt des Schreibens dieses Artikels 150 Mal positiv bewertet wurde. Es unterliegt ReDoS. Das spielt in vielen Fällen keine Rolle, könnte aber ein großes Problem darstellen, wenn Sie dies (zum Beispiel) in serverseitigem Node.js-Code verwenden.
– Trab
12. Dezember 2021 um 2:07 Uhr
@Trott können Sie eine Antwort vorschlagen, die für diesen Angriff nicht anfällig ist?
– Gourav
14. Dezember 2021 um 6:59 Uhr
@Gourav function removeAllTrailingSlashes(str) {let i = str.length; while (str[--i] === '/'); return str.slice(0, i+1);}
Hinweis: IE8 und älter unterstützen keine negativen Substr-Offsets. Verwenden str.length - 1 stattdessen, wenn Sie diese alten Browser unterstützen müssen.
Wirklich wie die Verwendung des Begriffs “alt” hier.
– Seitenquelltext
26. November 2019 um 20:00 Uhr
function stripTrailingSlash(str) { if(str.startsWith(“/”)) { return str.substr(1, str.length – 1); } Str zurückgeben; } NICHT FÜR IE8… wer benutzt überhaupt IE8?
– Mitja Gustin
15. Oktober 2021 um 11:59 Uhr
Seth Holladay
ES6 / ES2015 bietet eine API zum Abfragen, ob eine Zeichenfolge mit etwas endet, was das Schreiben einer saubereren und besser lesbaren Funktion ermöglicht.
@PaulRad Bei Verwendung dieses Sols wird das Problem des Zweigs str.slice (0, -1) für diese Zeile beim Komponententest nicht behandelt. Wie kann man das beheben?
– Bijay Rai
26. Juni 2020 um 3:12 Uhr
@BijayRai das bedeutet, dass Ihren Tests ein Fall fehlt, in dem str endet mit a / Schrägstrich. Sie sollten zwei Behauptungen (oder zwei Tests) haben, eine mit Schrägstrich und eine ohne.
– Seth Holladay
14. Juli 2020 um 21:43 Uhr
ChronosLLC
Ich würde einen regulären Ausdruck verwenden:
function someFunction(site)
{
// if site has an end slash (like: www.example.com/),
// then remove it and return the site without the end slash
return site.replace(/\/$/, '') // Match a forward slash / at the end of the string ($)
}
Stellen Sie sicher, dass die Variable site ist aber eine Zeichenfolge.
Basierend auf der Antwort von @vdegenne … wie man sich auszieht:
Einfacher abschließender Schrägstrich:
theString.replace(/\/$/, '');
Einzelne oder aufeinanderfolgende abschließende Schrägstriche:
theString.replace(/\/+$/g, '');
Einfacher führender Schrägstrich:
theString.replace(/^\//, '');
Einzelne oder aufeinanderfolgende führende Schrägstriche:
theString.replace(/^\/+/g, '');
Einzelne führende und abschließende Schrägstriche:
theString.replace(/^\/|\/$/g, '')
Einzelne oder aufeinanderfolgende führende und abschließende Schrägstriche:
theString.replace(/^\/+|\/+$/g, '')
Um sowohl Schrägstriche als auch zu handhaben der RückenSchrägstriche, ersetzen Instanzen von \/ mit [\\/]
Einige der Lösungen hier, wie z /\/+$/g sind anfällig für ReDoS, daher ist beispielsweise bei der Verwendung von serverseitigem Code Vorsicht geboten.
– Trab
12. Dezember 2021 um 2:11 Uhr
Ich weiß, dass es bei der Frage um abschließende Schrägstriche geht, aber ich habe diesen Beitrag bei meiner Suche nach trimmenden Schrägstrichen gefunden (sowohl am Ende als auch am Kopf eines Zeichenfolgenliterals), da die Leute diese Lösung benötigen würden, poste ich hier einen:
'///I am free///'.replace(/^\/+|\/+$/g, ''); // returns 'I am free'
AKTUALISIEREN:
wie @Stefan R In den Kommentaren erwähnt, würden Sie schreiben, wenn Sie sowohl Schrägstriche als auch Backslashes sowohl am Ende als auch am Kopf eines Zeichenfolgenliterals entfernen möchten:
'\/\\/\/I am free\\///\\\\'.replace(/^[\\/]+|[\\/]+$/g, '') // returns 'I am free'
Einige der Lösungen hier, wie z /\/+$/g sind anfällig für ReDoS, daher ist beispielsweise bei der Verwendung von serverseitigem Code Vorsicht geboten.
– Trab
12. Dezember 2021 um 2:11 Uhr
1ven
Dieser Ausschnitt ist genauer:
str.replace(/^(.+?)\/*?$/, "$1");
Es streift nicht / Zeichenfolgen, da es sich um eine gültige URL handelt.
Es entfernt Zeichenfolgen mit mehreren abschließenden Schrägstrichen.
Dies kann zwar ein gültiger Ansatz zum Entfernen mehrerer Schrägstriche sein, dies ist jedoch nicht die Anforderung des OP.
– Jon L.
18. April 2019 um 15:30 Uhr
@JonL. Viele Leute durchsuchen den Stapelüberlauf, um eine Antwort zu finden. Ich finde diese Antwort hilfreicher als die akzeptierte Antwort.
– Ronnel Martínez
3. März 2020 um 21:09 Uhr
Ich denke, das ist einfacher -> (.+?)\/+$. Keine Notwendigkeit zu verwenden ^ zunächst weil . wird sowieso von Anfang an suchen, keine Notwendigkeit zu verwenden *? bei vorher $ weil es die ursprüngliche Zeichenfolge zurückgibt, wenn das Regex-Muster nicht übereinstimmt.
– Arztgu
21. Oktober 2020 um 5:52 Uhr
Diese Antwort ist sehr anfällig für ReDos und sollte wahrscheinlich in serverseitigem Code und anderen Kontexten vermieden werden, in denen ReDoS-Angriffe ein Problem darstellen.
– Trab
12. Dezember 2021 um 2:13 Uhr
13105300cookie-checkRückgabezeichenfolge ohne nachgestellten Schrägstrichyes
Mögliches Duplikat von JQuery prüfen und Schrägstrich vom Ende der gelesenen URL entfernen
– Hugo
29. Januar 2014 um 8:17 Uhr