
Bruno
Gibt es eine Möglichkeit in JavaScript zu prüfen, ob eine Zeichenfolge eine URL ist?
RegExe werden ausgeschlossen, da die URL höchstwahrscheinlich wie geschrieben ist stackoverflow
; das heißt, dass es möglicherweise kein a hat .com
, www
oder http
.

Tom Güllen
Eine verwandte Frage mit einer Antwort
Oder diese Regexp aus Devshed:
function validURL(str) {
var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
'(\\#[-a-z\\d_]*)?$','i'); // fragment locator
return !!pattern.test(str);
}

Lukas
Anstatt einen regulären Ausdruck zu verwenden, würde ich empfehlen, ein Ankerelement zu verwenden.
wenn du das einstellst href
Eigentum eines anchor
werden verschiedene andere Eigenschaften gesetzt.
var parser = document.createElement('a');
parser.href = "http://example.com:3000/pathname/?search=test#hash";
parser.protocol; // => "http:"
parser.hostname; // => "example.com"
parser.port; // => "3000"
parser.pathname; // => "/pathname/"
parser.search; // => "?search=test"
parser.hash; // => "#hash"
parser.host; // => "example.com:3000"
Quelle
Wenn jedoch der Wert href
gebunden ist, keine gültige URL ist, dann ist der Wert dieser Hilfseigenschaften die leere Zeichenfolge.
Bearbeiten: Wie in den Kommentaren angegeben: Wenn eine ungültige URL verwendet wird, können die Eigenschaften der aktuellen URL ersetzt werden.
Solange Sie also nicht die URL der aktuellen Seite übergeben, können Sie Folgendes tun:
function isValidURL(str) {
var a = document.createElement('a');
a.href = str;
return (a.host && a.host != window.location.host);
}

Gemeinschaft
Ich verwende die folgende Funktion, um die URL mit oder ohne zu validieren http/https
:
function isValidURL(string) {
var res = string.match(/(http(s)?:\/\/.)?(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,6}\b([[email protected]:%_\+.~#?&//=]*)/g);
return (res !== null)
};
var testCase1 = "http://en.wikipedia.org/wiki/Procter_&_Gamble";
console.log(isValidURL(testCase1)); // return true
var testCase2 = "http://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&docid=nIv5rk2GyP3hXM&tbnid=isiOkMe3nCtexM:&ved=0CAUQjRw&url=http%3A%2F%2Fanimalcrossing.wikia.com%2Fwiki%2FLion&ei=ygZXU_2fGKbMsQTf4YLgAQ&bvm=bv.65177938,d.aWc&psig=AFQjCNEpBfKnal9kU7Zu4n7RnEt2nerN4g&ust=1398298682009707";
console.log(isValidURL(testCase2)); // return true
var testCase3 = "https://sdfasd";
console.log(isValidURL(testCase3)); // return false
var testCase4 = "dfdsfdsfdfdsfsdfs";
console.log(isValidURL(testCase4)); // return false
var testCase5 = "magnet:?xt=urn:btih:123";
console.log(isValidURL(testCase5)); // return false
var testCase6 = "https://stackoverflow.com/";
console.log(isValidURL(testCase6)); // return true
var testCase7 = "https://w";
console.log(isValidURL(testCase7)); // return false
var testCase8 = "https://sdfasdp.ppppppppppp";
console.log(isValidURL(testCase8)); // return false

Arier Beezadhur
Die URL-Validierung mit Javascript ist unten dargestellt
function ValidURL(str) {
var regex = /(?:https?):\/\/(\w+:?\w*)?(\S+)(:\d+)?(\/|\/([\w#!:.?+=&%!\-\/]))?/;
if(!regex .test(str)) {
alert("Please enter valid URL.");
return false;
} else {
return true;
}
}
9166000cookie-checkÜberprüfen Sie, ob ein JavaScript-String eine URL istyes
Fehlt die
http
es ist standardmäßig keine URL.– nfechner
19. April 2011 um 13:29 Uhr
@nfechner das heißt, wenn es kein Protokoll angibt und den Doppelpunkt verwendet (vorzugsweise mit zwei Schrägstrichen als nächstes), dann ist es keine URL?
– jcolebrand
19. April 2011 um 13:30 Uhr
Wie Sie in der lesen können URL-RFC, der einzige Teil, der wirklich notwendig ist, um einen String zu einer gültigen URL zu machen, ist der Doppelpunkt. Gültige URLs sehen so aus:
<scheme>:<scheme-specific-part>
– nfechner
19. April 2011 um 13:34 Uhr
siehe stackoverflow.com/a/3975573/572180
– nguyên
29. Mai 2013 um 1:30 Uhr
So testen Sie, ob etwas eine URL ist höchst kontextabhängig und ohne weitere Qualifizierung zu vage. Spielt es für Sie eine Rolle, ob es der URL-RFC-Spezifikation entspricht, funktioniert, wenn ein OS-Systemaufruf zum Öffnen der URL erfolgt, analysiert als
href
in einem Ankerelement, funktioniert beim Aufrufenwindow.open(url)
, zeigt auf etwas, das wirklich existiert, funktioniert in der Adressleiste des Browsers oder eine Kombination der oben genannten? Sie werden sehr unterschiedliche Antworten erhalten, je nachdem, welche davon Ihnen wichtig sind.– Roy Tinker
18. April 2018 um 18:59 Uhr