2009-09-14 4 views

Antwort

2

Führen Sie eine grundlegende RegExp-Test für Formatierung. Dann ping die URL mit einem XMLHttpRequest, um sicherzustellen, dass es existiert. Ein Beispiel jQuery ...

var url = $("#txtUserWebSite").val(); 
var reg = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)[email protected])?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([,-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([,-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/; 

if(!reg.test(url)) { 
    alert("Invalid URL!"); 
    return false; 
} 

$.get(url, function(dat, stat) { 
    if(stat == "success") 
    alert("Valid URL!"); 
    else 
    alert("Invalid URL!"); 
}) 
10

Ich gehe davon aus, dass Sie wissen, wie Sie den Wert <input> mit JavaScript zu erhalten. Ihr Problem besteht darin, die spezifische Funktion zum Überprüfen der URL zu schreiben.

Zuerst könnten wir prüfen, überprüfen, dass die URL syntaktisch korrekt ist.

Einige Beispiele, dass unsere URL Validator auf jeden Fall in Ordnung zu berücksichtigen ist:

http://www.example.com. 
http://www.google.ee/search?q=foo&sourceid=opera&ie=utf-8&oe=utf-8 
https://ama-z-on.co.uk/index.html?a=hei%20hoo 
ftp://ftp.linux.ee/public/gentoo/i386/portage-snapshot.tar.bz 
http://he.wikipedia.org/wiki/שטרגליים#.D7.A8.D7.90.D7.95_.D7.92.D7.9D 
sftp://123.1.255.128:80/pub 

Und das ist nur ein kleiner Bruchteil der realen Vielzahl von URL-s möglich. Und HTTP und FTP sind nicht die einzigen für URLs möglichen Protokolle. Oh Mann, diese URL-Validierung ist wirklich schwer.

Aber nehmen wir an, dass eine gültige URL mit einigen Buchstaben beginnen sollte, dann ": //" und danach, was auch immer. diese Art von Muster testen Sie einen regulären Ausdruck, die in JavaScript sieht wie folgt verwenden würde:

function validateUrl(url) { 
    return /^[a-z]+:\/\//i.test(url); 
} 

Reguläre Ausdrücke sind ein ganz großes Thema, das man beachten sollte, das Lernen selbst, sondern nur eine kurze Erklärung hier:

  • / - Beginn des regulären Ausdrucks
  • ^ - Übereinstimmung mit dem Beginn der Zeichenfolge
  • [a-z] - entspricht entweder a, b, c, ..., x, y, oder z.
  • + - bedeutet, dass das vorherige Muster einmal oder mehrmals wiederholt werden kann.
  • : - entspricht dem Doppelpunktsymbol.
  • \/ - passt Forward-Schrägstrich / (ohne den Backslash JavaScript würde denken, es ist das Ende des regulären Ausdrucks).
  • / - beendet den regulären Ausdruck.
  • i - Dies ist ein Modifikator, der bei diesem regulären Ausdruck die Groß-/Kleinschreibung nicht berücksichtigt.
  • .test(url) - ruft die test Methode des regulären Ausdrucksobjekts mit url als Parameter auf. Wenn der Parameter mit dem regulären Ausdruck übereinstimmt, wird true zurückgegeben, andernfalls false.

Zusätzlich möchten Sie vielleicht ohne http:// Teil der Eingabe einer URL ermöglichen - dies bedeutet, dass Sie wirklich den Domain-Namen oder die IP-Adresse oder was auch immer, dass folgt validieren müssen.

Ich denke, Sie sind jetzt ziemlich verwirrt, und das ist beabsichtigt. Sie sollten wirklich kein JavaScript schreiben, um die URL-Überprüfung selbst durchzuführen, es ist zu schwer, es richtig zu machen.Stattdessen sollten Sie eine Bibliotheksfunktion verwenden, die von vielen Experten getestet und bestätigt wird.

Vielleicht hat das JavaScript fraimwork, das Sie verwenden, bereits ein gutes Werkzeug für diesen Job. In diesem Fall benutze es. Leider kann ich keine spezielle Bibliothek zur URL-Validierung vorschlagen.

Zusätzlich möchten Sie möglicherweise pingen die URL wie Josh Stodola vorgeschlagen, um zu überprüfen, dass es wirklich existiert. Obwohl die spezielle Art, die Josh vorschlägt, problematisch sein könnte, wenn die von URL referenzierte Ressource 10GB Datei ist :)

-1

Schauen Sie sich die Regular Expression Library an, die ein großes Repository regulärer Ausdrücke für alle Arten von Validierungen hat. Sie bieten auch ein Online-Test-Tool.

Verwandte Themen