Überprüfen Sie, ob ein JavaScript-String eine URL ist

Lesezeit: 6 Minuten

Uberprufen Sie ob ein JavaScript String eine URL ist
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.

  • Fehlt die httpes 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 Aufrufen window.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


Welche Browser unterstutzen HTML 5 Tag auf Windows heute
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);
}

  • Schlägt bei gültiger URL fehl web.archive.org/web/20170817095211/https://github.com/Microsoft/…

    – Georg Mauer

    27. März 2019 um 18:19 Uhr

  • Scheitert weiter en.m.wikipedia.org/wiki/C_Sharp_(Programmiersprache)

    – Supun Kavinda

    3. Juli 2019 um 6:14 Uhr

  • www.jayakumar ist es eine gültige URL? es kehrt wahr zurück

    – Jayakumar

    5. September 2019 um 12:29 Uhr

  • Ich denke, diese Antwort ist veraltet, schlage vor, sie nicht in der Produktion zu verwenden

    – David Konstantin

    21. Juni 2020 um 7:34 Uhr

  • Wenn wir “111111111111111111111111111111111111111111111” als Eingabeserver eingeben, wird der Server hängen. Ich bin auf dieses Problem gestoßen und habe dann meinen Code in str.match(/(http(s)?:\/\/.)?(www\.)?[[email protected]:%._\+~#=]{2.256}\.[a-z]{2,6}\b([[email protected]:%_\+.~#?&//=]*)/g);

    – Epsi95

    15. September 2020 um 13:31 Uhr

  • schlägt bei Bildlinks der Google-Suche fehl: 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

    – Bill Davis

    23. April 2014 um 0:23 Uhr


  • das ist unbrauchbar langsam

    – Hernán Eche

    28. Januar 2015 um 3:00 Uhr

  • @HernánEche Was meinst du damit schleppend? start = new Date(); isURL("http://michalstefanow.com"); end = new Date(); diff = end - start; console.log(diff) Ich stellte einen Wasserkocher auf, ging aufs Klo, rief meine Mum an und das Ding war im Handumdrehen erledigt…

    – Mars Robertson

    2. Mai 2016 um 13:59 Uhr

  • Es kehrt zurück true zum aaa.

    – alex naumow

    1. Dezember 2016 um 9:13 Uhr

  • Dies sollte absolut nicht die richtige Antwort sein. Es schlägt viele Testfälle fehl und, was noch wichtiger ist, es hängt Ihre Seite selbst an einer kurzen Zeichenfolge auf: isURL('12345678901234567890123') füge noch ein paar Zeichen hinzu und es ist noch schlimmer.

    – ähm

    16. April 2018 um 16:51 Uhr


Uberprufen Sie ob ein JavaScript String eine URL ist
Lukas

Anstatt einen regulären Ausdruck zu verwenden, würde ich empfehlen, ein Ankerelement zu verwenden.

wenn du das einstellst href Eigentum eines anchorwerden 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);
}

  • Dies ist nicht der Fall (zumindest in Chrome 48). Wenn die URL übergeben wird a.href ist ungültig, parser.host gibt den Hostnamen der Seite zurück, auf der Sie sich gerade befinden, nicht den erwarteten false.

    – Sam Beckham

    25. Februar 2016 um 15:37 Uhr


  • Gäh! das ist seltsam. Ich schwöre, ich habe das getestet! Ich denke, es ist fair zu sagen, dass dies nie wirklich auf der aktuellen Seite verwendet werden muss, also kann die Bedingung einfach geändert werden. Ich werde den Beitrag editieren.

    – Lukas

    25. Februar 2016 um 22:48 Uhr

  • es ist kein sehr typischer Anwendungsfall, aber diese Technik funktioniert nicht im Kontext des Firefox-Browserfensters (wichtig für die Addon-Entwicklung)

    – Chrommod

    15. Mai 2016 um 16:01 Uhr

  • function isValidURL(str): so viel besser als die Verwendung von Regex! Danke!

    – Rodrigo

    13. April 2018 um 15:55 Uhr

  • Ziemlich einfache Möglichkeit, das Problem zu umgehen. Diese Eigenschaften sind jedoch experimentell: developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement

    – Boris D. Teoharov

    30. November 2018 um 14:19 Uhr

1646258710 13 Uberprufen Sie ob ein JavaScript String eine URL ist
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

  • Dies ist nicht der Fall (zumindest in Chrome 48). Wenn die URL übergeben wird a.href ist ungültig, parser.host gibt den Hostnamen der Seite zurück, auf der Sie sich gerade befinden, nicht den erwarteten false.

    – Sam Beckham

    25. Februar 2016 um 15:37 Uhr


  • Gäh! das ist seltsam. Ich schwöre, ich habe das getestet! Ich denke, es ist fair zu sagen, dass dies nie wirklich auf der aktuellen Seite verwendet werden muss, also kann die Bedingung einfach geändert werden. Ich werde den Beitrag editieren.

    – Lukas

    25. Februar 2016 um 22:48 Uhr

  • es ist kein sehr typischer Anwendungsfall, aber diese Technik funktioniert nicht im Kontext des Firefox-Browserfensters (wichtig für die Addon-Entwicklung)

    – Chrommod

    15. Mai 2016 um 16:01 Uhr

  • function isValidURL(str): so viel besser als die Verwendung von Regex! Danke!

    – Rodrigo

    13. April 2018 um 15:55 Uhr

  • Ziemlich einfache Möglichkeit, das Problem zu umgehen. Diese Eigenschaften sind jedoch experimentell: developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement

    – Boris D. Teoharov

    30. November 2018 um 14:19 Uhr

1646258710 807 Uberprufen Sie ob ein JavaScript String eine URL ist
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;
  }
}

916600cookie-checkÜberprüfen Sie, ob ein JavaScript-String eine URL ist

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy