Wenn Sie möchten, um den Ausdruck ändern passen entweder eine völlig leere Zeichenkette oder eine vollständige URL, müssen Sie die Anker Metazeichen verwenden^und $ (die den Anfang und das Ende einer Zeile passen beziehungsweise).
^(|https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$
Wie bereits dirkgently aus, können Sie Ihr Spiel für das Protokoll ein wenig vereinfacht, so dass ich eingeschlossen habe dich auch.
Wenn Sie diesen Ausdruck jedoch in einem Programm oder Skript verwenden, ist es möglicherweise einfacher, die Sprachen zu verwenden, um zu überprüfen, ob die Eingabe leer ist.
// in no particular language...
if input.length > 0 then
if input matches <regex> then
input is a URL
else
input is invalid
else
input is empty
Es kam nicht von der Frage an mich, dass Sie Zeilen in einer Textdatei wurden passend ... Vielleicht haben Sie wahrscheinlich in den HTML-Code einer http-Antwort für Links Parsen wurden und konnte nicht herausfinden den Kontext des Ziels "leere Zeichenfolge", bis ich die von Ihnen ausgewählte Antwort gelesen habe. Denk anders, oder? – Hardryv
für den Fall, dass es für jeden Nutzer hilfreich ist, den ich besucht habe, ist die beste Übereinstimmungszeichenfolge, die ich für in HTML eingebettete URLs entworfen habe, "((http) s?: \/\ /) ([\ W \. \ -_] * (\ /)?) * (# [\ w \. \ -_])? " - Ich habe es gegen mehrere beliebte Websites mit vielen Links getestet und es wird auch das Ende-URL-Seitenklassen-Such-Tag enthalten – Hardryv