URL Regex
Finden Sie Webadressen in Text mit einem kurzen Muster und sehen Sie genau, wo es aufhört, bevor Sie es in Code übernehmen.
URL Regex
Links aus Logs, Chat-Exporten oder gescraptem Text herauszuziehen ist ein Fall für einen regulären Ausdruck, und das Muster sollte kurz genug sein, um es lesen zu können. Diese Seite öffnet den Regex-Tester mit dem Muster URL (http/https) aus der Musterbibliothek, https?:\/\/[^\s/$.?#][^\s]*, mit den Flags gi.
So liest sich das Muster
| Teil | Bedeutung |
|---|---|
https? | http, mit optionalem s |
:\/\/ | Der Doppelpunkt und die zwei Schrägstriche, maskiert, damit das Muster auch zwischen Schrägstrichen im Code funktioniert |
[^\s/$.?#] | Ein Zeichen, das den Hostnamen beginnt: kein Leerzeichen, Schrägstrich, Dollarzeichen, Punkt, Fragezeichen oder Rautezeichen |
[^\s]* | Alles Weitere bis zum nächsten Leerzeichen |
gi | Jeden Link finden, in beliebiger Groß- und Kleinschreibung |
Was sie erfasst und was sie übersieht
| Text | Ergebnis |
|---|---|
https://logicutil.com/tool/regex-tester | Die ganze Adresse |
http://example.org/page?q=1#top | Die ganze Adresse, samt Query und Fragment |
http://localhost:8080/x | Die ganze Adresse, samt Port |
HTTPS://EXAMPLE.COM/X | Getroffen, dank des Flags i |
https://例子.测试/路径 | Getroffen: nicht-lateinische Domains und Pfade bleiben erhalten |
Visit https://example.com. | https://example.com., mit dem Punkt |
(https://example.com/a) | https://example.com/a), mit der Klammer |
www.example.com | Kein Treffer: Es fehlt das Schema |
ftp://files.example.com | Kein Treffer: nur http und https |
Eine strengere Version
Um Satzzeichen am Ende auszuschließen, beenden Sie den Treffer mit einem Lookahead: https?:\/\/[^\s/$.?#][^\s]*?(?=[\].,;:!?)]*(?:\s|$)). Es nimmt die kürzeste Folge, auf die nur noch Satzzeichen und dann ein Leerzeichen oder das Textende folgen. So ergibt Visit https://example.com. den Treffer https://example.com und (https://example.com/a) den Treffer https://example.com/a. Der Preis: Ein Link, der wirklich auf eine Klammer endet, wie manche Wikipedia-Adressen, verliert sie.
Links finden heißt nicht, sie zu validieren
Ein solches Muster beantwortet die Frage "enthält dieser Text etwas, das wie ein Link aussieht", nicht "ist das eine funktionierende Adresse". Für einen einzelnen Wert in JavaScript ist new URL(value) strenger: Es wirft einen Fehler bei https:// ganz ohne Host. Nutzen Sie die Regex, um Kandidaten im Text zu finden, und lassen Sie dann new URL() oder Ihren Server entscheiden.
Verwandte Seiten
Wandeln Sie gefundene Links mit [$&]($&) auf der Seite Regex Suchen und Ersetzen in Markdown um, und sehen Sie sich im JavaScript Regex Tester an, wie sich die Flags verhalten. E-Mail-Adressen haben ihre eigenen Tücken, die der Leitfaden zu Regex für E-Mail-Adressen behandelt.