Ich muss eine URL in Variable mit jQuery validieren, kann aber nicht validate-plugin verwenden. Gibt es einen einfachen Weg, dies zu tun?Validierung von URLs mit jQuery ohne das validate-plugin?
Antwort
können Sie die gleiche Regex verwenden, die die Validierung Plugin ist (auf die neueste regex aktualisiert am 23. Mai 2015):
function isUrlValid(url) {
return /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);
}
var testCases = [
"http://www.google.com/",
"https://www.google.com/",
"ftp://www.google.com/",
"http://google.com/",
"http://google.com",
"https://google.com",
"http://www.google.com:80/",
"https://www.google.com:443/",
"http://127.0.0.1/",
"http://127.0.0.1:9200/",
"www.site.com",
"x:",
"http://",
"javascript:alert('xss')",
"http://w",
"http:",
"derp://www.google.com",
"http://localserver"
], div = document.getElementById("output");
for(var i=0; i < testCases.length; i++) {
var test = testCases[i];
div.innerHTML += (isUrlValid(test) ? "<span class='valid'>valid</span>: " : "<span class='invalid'>invalid</span>: ") + "" + test + "\n";
}
.valid { color: green; }
.invalid { color: red; }
<pre id="output"></pre>
Diese Griffe Unicode, etc, so dass es die ausführliche etwas ist . Die Quelle ist the validation plugin itself. Ein paar Hinweise: Es ist wahrscheinlich, was Sie wollen, aber es ist nicht streng richtig. Normalerweise müssen Sie eine etwas andere Regex wählen, wenn Sie Dinge wie http://w
und http://localserver
akzeptieren wollen, die in einer Intranetumgebung gültig sind, aber in den meisten Webformularen nicht erlaubt sind. In gewisser Weise ist diese Regex sicherer, weil sie in solchen Fällen eine FQDN erfordert. Ähnlich andere Beispiele wie benutzerdefinierte Protokolle werden hier abgelehnt, sind aber gültig und funktionieren für viele Dinge, die heute verwendet werden. Wenn Sie Nutzer fragen "Was ist Ihre Homepage?" in einer Form aber ... möchten Sie diese wahrscheinlich sowieso ausschließen.
Wer findet das später: Bitte testen Sie weitere Testfälle mit dem enthaltenen Snippet und aktualisieren Sie die Antwort, wenn Sie der Meinung sind, dass ein neuer häufiger Fall erwähnt werden sollte. Ich schrieb die Antwort mit der neuesten Regex und in diesem Format neu, um der Community besser zu dienen.
ja mit einem regex:
/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/ix
es akzeptiert keine IP-Adresse –
Vielen Dank Meo und Nick, lege ich beide Ihre Antworten zusammen und es funktioniert einfach toll.
if(/^(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test($("#url").val())){
alert("valid URL");
} else {
alert("invalid URL");
}
es akzeptiert keine IP-Adresse –
Ich erhalte einen ungültigen Ausdruck Ausdruck Fehler wegen der 'x' am Ende .. – Yohn
Möchten Sie Ihre URL überprüfen:
Bitte geben Sie die URL in dieser Funktion, dann wird dies Sie wahr OR falsch geben.
Siehe Funktion:
<script>
function isUrl(s) {
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(s);
}
isUrl(yourURL);
</script>
var url = $('input.surl').val();
url_validate = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if(!url_validate.test(url)){
alert('error');
}
else{
alert('success');
}
Code:
var re = /^(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/;
re.test('http://www.goole.in');
Einige Erklärung würde Ihre Antwort verbessern. Die Frage war auch, wie man eine in einer * Variablen * gespeicherte URL validiert. – dakab
Wenn Sie sicher sind, dass Ihr Publikum HTML5 verwenden, können Sie type="url"
verwenden, um die Textzeichenfolge zu validieren. Sie könnten auch dynamisch ein Eingabeelement erstellen, den Typ festlegen und testen, ob die Variable eine gültige URL ist oder nicht.
Das Folgende ist aus https://www.raymondcamden.com/2016/10/19/using-html-form-validation-in-pure-javascript auf einem Blog-Eintrag basiert
var elm;
function isValidURL(u){
if(!elm){
elm = document.createElement('input');
elm.setAttribute('type', 'url');
}
elm.value = u;
return elm.validity.valid;
}
console.log(isValidURL('http://www.google.com/'));
console.log(isValidURL('//google.com'));
console.log(isValidURL('google.com'));
Dies ist eine sehr einzigartige Lösung. –
Tolles Denken. –
- 1. Jquery Validierung ohne Formularübergabe
- 2. jQuery Validierung ohne Formular-Tag
- 3. Jquery-Validierung: Aufruf gültig ohne Fehler anzuzeigen?
- 4. Jquery-Validierung - Nummer ohne führende Null zulassen?
- 5. Wie manuell Validierung mit jQuery Validierung auslösen?
- 6. Ajax-Validierung mit jquery?
- 7. Jquery Validierung mit E-Mail
- 8. Schreiben von bedingten Regeln mit jQuery Validierung
- 9. Wie können wir Jquery Validierung ohne jquery Validator
- 10. Validierung von CEdit ohne Unterklasse
- 11. JQuery Validierung Plugin mit Ankreuzfeldgruppe
- 12. Webseiten URLs ohne Dateiendung?
- 13. X3D ImageTexture ohne URLs
- 14. jquery Validierung mit Ajax Anruf
- 15. Jquery-Validierung für das dynamische Hinzufügen von Zeilen-
- 16. Jquery Validierung - mit Formular-Tag
- 17. jquery Eingabe Validierung + Hintergrundfarbe
- 18. Kendo DatePickerFor mit JQuery Validierung
- 19. Redirect URLs ohne .htaccess
- 20. Kombination von jQuery Validierung mit jQuery Benachrichtigen, um Nachrichten anzuzeigen
- 21. zur Website-URLs bei der Validierung
- 22. Schöne URLs ohne mod_rewrite, ohne .htaccess
- 23. jQuery Validate Plugin - Trigger-Validierung von Einfeld
- 24. EntLib Validierung: Lokalisierung ohne Ressourcen - Validierung von der Konfiguration
- 25. Jersey Validierung ohne Anmerkungen
- 26. Wicket - Update-Modell mit Ajax ohne Validierung
- 27. Wo kann man Microsoft jQuery Unobtrusive Validierung ohne NuGet herunterladen
- 28. Umleiten von URLs ohne Schrägstrich zu URL mit Schrägstrich
- 29. Validierung für ein Element mit jQuery deaktivieren Unauffällig Validierung
- 30. JQuery Validierung ohne MS-Skripte in asp.net mvc2 Projekt
sehr gut funktioniert. Einfach auch. Würde es lieben, wenn Sie die Option zum Anzeigen der Antwort erweitern können, um automatisch http: // hinzuzufügen? – TheBlackBenzKid
danke für das Posten, das hat auch für mich super funktioniert –
Zusätzlich akzeptiert es "derp: //www.google.com" als gültige URL. – jnovack