2017-03-21 9 views
2

Ich benötige Hilfe mit RegEx, es kann ein grundlegendes Zeug sein, aber ich kann einen korrekten Weg nicht finden, wie man es macht. Bitte helfen Sie!regex - wie man alle Doppelschlitze außer gefolgt von Doppelpunkt wählt

So, hier ist meine Frage:

ich eine Liste von URLs, die wegen der doppelten Schrägstrich ungültig sind, wie folgt aus: http://website.com//wp-content/folder/file.jpg, um es zu beheben ich alle doppelte Schrägstriche mit Ausnahme der ersten entfernen müssen gefolgt durch Doppelpunkt (http://), so feste URL ist dies: http://website.com/wp-content/folder/file.jpg.

Ich muss es mit RegExp tun.

Variant 1

url.replace(/\/\//g,'/'); // => http:/website.com/wp-content/folder/file.jpg

werden alle Doppel aufgeschlitzt ersetzen (//), einschließlich der ersten, der nicht korrekt ist.


Beispiel hier: https://regex101.com/r/NhCVMz/2

+1

* "Ich muss es mit RegExp tun" *: Ich bin jedes Mal, wenn ich diese Zeilen lesen Angst. Aus welchem ​​Grund müssen Sie es mit einem Regex tun? –

+0

Können Sie annehmen, dass keine URL in der Liste ein '?' oder '#' Charakter? – traktor53

Antwort

2

Sie

url = url.replace(/(https?:\/\/)|(\/){2,}/g, "$1$2") 
verwenden

Siehe regex demo

Hinweis: ein ^ Anker am Anfang des Musters könnte, wenn die Saiten verwendet werden sind ganze URLs.

wird dieses Muster http:// oder https:// und wiederherstellen im resultierenden String mit der $1 Rückreferenzierung und alle anderen Fällen von 2 oder mehr / von (\/){2,} angepasst werden und nur 1 Vorkommen wird wieder in den resultierenden passen und erfaßt gesetzt werden string, da die Erfassungsgruppe den Quantifizierer nicht enthält.

+1

hat für mich gearbeitet, danke! – Matiishyn

0

Finden (^|[^:])/{2,}
ersetzen $1/

begrenzt: /(^|[^:])\/{2,}/

Verwandte Themen