web-dev-qa-db-ja.com

AndroidのEditTextでURL /ウェブサイト名を検証する方法は?

入力、URL、またはwww.google.com from EditText in Androidそしてユーザーがクリックする送信するButtonまたはEditTextがフォーカスを失ったとき、URLは「www.anyURL.com "...

これどうやってするの? Androidで利用可能な組み込み機能はありますか?

79
Preetam

短い答え

パターンクラスでWEB_URLパターンを使用する

 Patterns.WEB_URL.matcher(potentialUrl).matches()

URLが有効な場合はTrue、URLが無効な場合はfalseを返します

長い答え

Android APIレベル8には WEB_URL パターンがあります。ソースを引用すると、RFC 3987のほとんどの部分に一致します。 APIレベルでは、単純にソースからパターンをコピーしてアプリケーションに含めることができますが、パターンとマッチャーの使用方法を知っていると想定しているため、ここでは詳しく説明しません。

また、クラス RLUtil はいくつかの便利なメソッドを提供します、例えば:

メソッドの説明はあまり精巧ではありません。そのため、おそらくソースを見て、どれが目的に最も適しているかを判断するのが最善でしょう。

検証チェックをいつトリガーするかについては、複数の可能性があります:EditTextコールバック関数を使用できます

または TextWatcher を使用します。これはより良いと思います。

使用しないでくださいURLUtil以下のようにURLを検証します。

 URLUtil.isValidUrl(url)

なぜなら、「http://」のような文字列が有効ではないURLとして与えられるからです

247
Dimi
/** 
* This is used to check the given URL is valid or not.
* @param url
* @return true if url is valid, false otherwise.
*/
private boolean isValidUrl(String url) {
    Pattern p = Patterns.WEB_URL;
    Matcher m = p.matcher(url.toLowerCase());
    return m.matches();
}
18

あなたのウェブサイトの検証にこの正規表現を使用してください

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;

}
1
Nidhi Savaliya

RLUtil.isValidUrl は、APIレベル1以降に存在するため機能します。

1
twig