Wie validiere ich eine URL / einen Website-Namen in EditText in Android?

Lesezeit: 2 Minuten

Benutzer-Avatar
Preetam

Ich möchte eine Eingabe, eine URL oder nur einen Website-Namen wie www.google.com aus EditText in Android und auf Benutzer klicken Sie auf die Button einzureichen oder wann die EditText den Fokus verliert sollte die URL validiert werden, wie sie im Format “www.anyURL.com“…

Wie kann ich das machen? Gibt es in Android integrierte Funktionen?

Benutzer-Avatar
Hesam

Falls Sie in Ihrem UnitTest erhalten haben NullPointerException dann benutze PatternsCompat anstatt Patterns.

fun isFullPath(potentialUrl: String): Boolean {
    return PatternsCompat.WEB_URL.matcher(potentialUrl.toLowerCase(Locale.CANADA)).matches()
}

Außerdem wurde mir klar, dass diese Methode zurückkehrt true wenn ich daran vorbeigehe Photo.jpg. Meine Erwartung ist false. Daher schlage ich die folgende Methode anstelle der obigen vor.

fun isFullPath(potentialUrl: String): Boolean {
    try {
        URL(potentialUrl).toURI()
        return true
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return false
}

  • Das hat mir gerade den Tag versüßt. Danke!

    – funkelnder_frosch

    8. Juni 2020 um 22:29 Uhr

  • Vielen Dank für den Tipp zur Verwendung von PatternsCompat zum Ausführen von Tests.

    – Addi B

    6. Oktober 2020 um 10:02 Uhr

  • Die Web-URL muss in Kleinbuchstaben geschrieben sein, andernfalls gibt das Muster falsch zurück. nur posten, vielleicht hilft es jemandem..

    – praveenb

    25. September 2014 um 5:21 Uhr

  • Das obige Code-Snippet @praveenb gibt an, dass www.website gültig ist, ohne .com oder .in gibt es true zurück. Können Sie bitte sagen, wie Sie dieses Szenario validieren können?

    – Parth Patel

    13. August 2019 um 5:48 Uhr


  • Warum genau muss es Kleinbuchstaben sein? Bitte sagen Sie nicht nur „das ist nötig“, sondern erklären Sie auch, warum es nötig ist!

    – Carsten Hagemann

    15. Mai 2020 um 9:26 Uhr

URLUtil.isValidUrl wird funktionieren, da es seit API-Level 1 existiert.

  • Dies sollte nicht die richtige Antwort sein, wenn Sie schau dir den code dafür an . Es wird nur das ursprüngliche URL-Schema überprüft, nicht, dass die gesamte URL gültig ist. Dies ist wahrscheinlich eine der schlechtesten URL-Validierungen, die ich je gesehen habe

    – Mike

    25. August 2014 um 19:20 Uhr


Benutzer-Avatar
Nidhi Savaliya

Verwenden Sie diesen regulären Ausdruck bei Ihrer Website-Validierung

String WebUrl = "^((ftp|http|https):\\/\\/)?(www.)?(?!.*(ftp|http|https|www.))[a-zA-Z0-9_-]+(\\.[a-zA-Z]+)+((\\/)[\\w#]+)*(\\/\\w+\\?[a-zA-Z0-9_]+=\\w+(&[a-zA-Z0-9_]+=\\w+)*)?$";


//TODO for website validation

private boolean isValidate() 
{

        String website = txtWebsite.getText().toString().trim();
        if (website.trim().length() > 0) {
            if (!website.matches(WebUrl)) {
                //validation msg
                return false;
            }
        }
        return true;

}

  • Dies sollte nicht die richtige Antwort sein, wenn Sie schau dir den code dafür an . Es wird nur das ursprüngliche URL-Schema überprüft, nicht, dass die gesamte URL gültig ist. Dies ist wahrscheinlich eine der schlechtesten URL-Validierungen, die ich je gesehen habe

    – Mike

    25. August 2014 um 19:20 Uhr


Benutzer-Avatar
Gemeinschaft

Oder Sie könnten einfach das gute alte verwenden Regex

Pattern urlRegex = Pattern.compile("((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+(:[0-9]+)?|(?:ww‌​w.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?‌​(?:[\w]*))?)");

Das sage ich nicht Patterns.WEB_URL ist schlecht, es macht es einfach leicht zu testen was passt zusammen und was nicht.

1010620cookie-checkWie validiere ich eine URL / einen Website-Namen in EditText in Android?

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

Privacy policy