Program Tip

Android의 EditText에서 URL / 웹 사이트 이름을 확인하는 방법은 무엇입니까?

programtip 2020. 10. 8. 18:52
반응형

Android의 EditText에서 URL / 웹 사이트 이름을 확인하는 방법은 무엇입니까?


입력, URL 또는 웹 사이트 이름 (예 : www.google.com ) EditText을 Android에서 가져오고 사용자가를 클릭 Button하여 제출하거나 EditText초점이 맞지 않으면 URL이 "형식으로 확인되어야합니다." www.anyURL.com "...

어떻게 할 수 있습니까? Android에서 사용할 수있는 내장 기능이 있습니까?


짧은 답변

패턴 클래스에서 WEB_URL 패턴 사용

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

그것은 반환 URL이 유효한 경우는 true를 하고 URL이 유효하지 않은 경우는 false .

긴 대답

Android API 레벨 8 부터 WEB_URL 패턴이 있습니다. 출처를 인용하면 "RFC 3987의 대부분과 일치"합니다. 더 낮은 API 레벨을 대상으로하는 경우 소스에서 패턴을 복사하여 애플리케이션에 포함 할 수 있습니다. 패턴과 매처를 사용하는 방법을 알고 있다고 가정하므로 여기서 더 자세히 설명하지 않겠습니다.

또한 URLUtil 클래스 는 다음과 같은 몇 가지 유용한 메소드를 제공합니다.

방법에 대한 설명은 그다지 정교하지 않으므로 소스를 살펴보고 목적에 가장 적합한 방법을 찾는 것이 가장 좋습니다.

유효성 검사를 트리거하는 경우에는 여러 가지 가능성이 있습니다. EditText 콜백 함수를 사용할 수 있습니다.

또는 TextWatcher를 사용하십시오 .

아래와 같이 URL을 확인하기 위해 URLUtil사용하지 마십시오 .

 URLUtil.isValidUrl(url)

사실이 아닌 유효한 URL로 "http : //"와 같은 문자열을 제공하기 때문입니다.


/** 
* 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();
}

URLUtil.isValidUrl 은 API 레벨 1부터 존재하므로 작동합니다.


웹 사이트 유효성 검사에이 정규식을 사용하세요.

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;

}

아니면 그냥 좋은 옛날을 사용할 수 있습니다 Regex

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

나는 Patterns.WEB_URL그것이 나쁘다고 말하는 것이 아니라 일치하는 것과 일치하지 않는 것을 쉽게 테스트수 있도록합니다 .

참고 URL : https://stackoverflow.com/questions/5617749/how-to-validate-a-url-website-name-in-edittext-in-android

반응형