
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?

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
}
URLUtil.isValidUrl wird funktionieren, da es seit API-Level 1 existiert.

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;
}

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]+)?|(?:www.|[-;:&=\+\$,\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.
10106200cookie-checkWie validiere ich eine URL / einen Website-Namen in EditText in Android?yes