프로그래밍을 활용하면 정형 및 비정형 텍스트 기반 정보의 조작이 더욱 관리하기 쉬워졌습니다. 정규 표현식 및 외부 라이브러리와 같은 도구의 구현은 이러한 프로세스를 상당히 용이하게 합니다.

파이썬, 자바스크립트 등 다양한 프로그래밍 언어를 사용하여 정규식(리덱스)을 사용하여 유니폼 리소스 로케이터(URL)를 인증할 수 있습니다. 이 특정 정규식은 완전히 완벽하지는 않지만 기본 애플리케이션의 URL을 면밀히 조사하는 데 사용할 수 있습니다.

이 문서에서 URL 유효성 검사에 제공된 정규식은 대부분의 경우에 효과적일 수 있지만, 유효한 URL의 모든 인스턴스를 캡처하지 못할 수도 있다는 점에 유의해야 합니다. 여기에는 IP 주소가 포함된 웹 주소, 라틴 문자가 아닌 문자 또는 FTP와 같은 대체 프로토콜이 포함될 수 있습니다. 따라서 사용자는 이 정규식의 한계를 이해하고 결과의 정확성을 보장하기 위해 추가 확인 방법을 활용하는 것이 좋습니다.

URL 유효성 검사를 위한 정규식

문자열은 “http://” 또는 “https://”로 시작하고 그 뒤에 이중 슬래시(“://”)가 와야 합니다.

하위 도메인과 최상위 도메인의 연결 허용 범위는 알파벳, 숫자 및 특수 문자로 구성된 2~35자 사이입니다.

최상위 도메인(TLD)은 알파벳 문자로만 구성되어야 하며, 길이는 2~6자 사이여야 합니다.

URL(유니폼 리소스 로케이터)의 접미사 구성 요소는 영숫자 및/또는 특수 문자로 구성될 수 있으며 0회 이상 반복될 수 있습니다.

JavaScript 내의 정규식을 사용하여 유효한 URL을 확인할 수 있습니다.

^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$

Python에서 URL의 유효성을 검사하기 위한 해당 정규식은 다음과 같습니다:

^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$

이 함수는 입력 문자열이 “://”가 앞에 오는 HTTPS 또는 HTTP 프로토콜로 시작되는지 확인하여 첫 문자가 “http” 또는 “h”인지 확인하고, 그렇지 않은 경우 문자열의 시작 부분에 해당 문자를 추가합니다.

문자 클래스 [^\w\s]는 영숫자나 공백이 아닌 모든 문자를 나타냅니다.따라서 하위 도메인 및 루트 도메인 부분, 쿼리 문자열 또는 하위 디렉터리 부분 등 URL의 특정 부분 내에서 허용되는 문자 유형을 나타내는 방법으로 사용할 수 있습니다. 구체적으로 이 문자 클래스의 첫 번째 발생은 이러한 부분에 허용되는 문자 집합을 지정하고, 두 번째 발생은 URL의 쿼리 문자열 또는 하위 디렉터리 부분에 나타날 수 있는 추가 문자를 허용합니다.

이 글도 확인해 보세요:  내부에서 REST API 호출을 수행하는 방법 VS 코드

숫자 값 “{2,256}”은 발생 횟수가 발생할 수 있는 미리 정해진 간격을 나타내는 빈도 범위 표시기 역할을 합니다. 구체적으로 이 값은 도메인과 하위 도메인의 연결이 양쪽 끝점을 포함하여 2~256개의 연속된 정수 범위에 속하는 모든 경우를 포함하는 범위를 나타냅니다.

기호 “.”는 서면 또는 디지털 커뮤니케이션에서 두 가지 아이디어, 개념 또는 정보 사이의 지점 또는 구분을 나타내는 데 자주 사용됩니다. 문법, 수학, 컴퓨터 프로그래밍 등 다양한 맥락에서 찾을 수 있습니다.

최상위 도메인 구성 요소의 문자 집합은 길이가 2글자에서 6글자인 “a”에서 “z”까지 소문자로만 구성되도록 제한됩니다.

기호 “\b”는 언어 단위의 여백을 나타내며, 단어의 시작 또는 끝을 의미합니다.

기호 **는 0회 이상 나타날 수 있는 반복 연산자를 나타내며 쿼리 문자열, 매개변수 또는 하위 디렉터리를 나타냅니다.

기호 “^”는 문자열의 시작을 나타내고 “$”는 문자열의 끝을 나타냅니다.

이전 설명에 불만이 있는 경우 계속 진행하기 전에 정규 표현식에 대한 입문서를 숙독하는 것이 좋습니다. 정규 표현식을 사용하려면 적응 기간이 필요하며, 정규 표현식을 통해 사용자 계정 정보를 확인하는 등의 예제를 공부하면 정규 표현식 사용에 적응하는 데 도움이 될 수 있습니다.

앞서 언급한 정규식은 지정된 패턴을 따르는 웹 주소를 포함하여 다양한 형태의 웹 주소를 매칭할 수 있습니다.

현재 지정한 URL에 액세스할 수 없습니다.

[http://www.something.com/](http://www.something.com/)의 웹사이트는 정보 배포 및 커뮤니케이션을 포함하되 이에 국한되지 않는 다양한 목적을 위한 플랫폼입니다.

상기 웹사이트는 [대학명]에 소속된 [무언가]에 속해 있습니다.

위 URL은 주소창에 지정된 웹사이트 내의 특정 경로로 연결되며, 지정된 경로의 끝에 위치한 특정 페이지 또는 리소스를 가리키고 있음을 나타냅니다.

제공된 URL은 쿼리 문자열 매개변수가 있는 웹 주소로 보이며, 특히 URL 끝에 물음표 “?” 뒤에 위치합니다. 쿼리 문자열은 앰퍼샌드 기호 “&”로 구분되는 다양한 키-값 쌍으로 구성되며, 서버와 클라이언트 간에 데이터를 URL 인코딩 형식으로 전달하는 데 사용할 수 있습니다.

제공된 링크는 간단한 언어로 작성된 하위 도메인이 없는 웹 페이지 주소로 보입니다.

이 글도 확인해 보세요:  자바스크립트에서 Intl API를 사용하는 방법

제공된 링크는 Google에서 제공하는 웹 기반 이메일 서비스인 Google Mail에 액세스하기 위한 링크입니다.

프로그램에서 정규 표현식 사용

이 작업에 사용된 소스 코드는 GitHub 저장소에 저장되어 있으며 MIT 라이선스 계약의 후원으로 무료로 사용할 수 있습니다.

프로그래밍 언어 Python을 사용하여 웹 주소의 진위 여부를 검증하는 알고리즘 방법에는 다음 단계가 포함됩니다:

import re
 
def validateURL(url):
    regex = "^((http|https)://)[-a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)$"
    r = re.compile(regex)
 
    if (re.search(r, url)):
        print("Valid")
    else:
        print("Not Valid")
 
url1 = "https://www.linkedin.com/"
validateURL(url1)
url2 = "http://apple"
validateURL(url2)
url3 = "iywegfuykegf"
validateURL(url3)
url4 = "https://w"
validateURL(url4)

본 코드는 정규 표현식 패턴의 문자열 표현을 인수로 받아 해당 정규 표현식 패턴 객체를 반환하는 파이썬의 re.compile() 함수를 활용합니다. 그런 다음 이 객체를 사용하여 re.search() 함수를 적용하여 주어진 문자열 내에서 패턴의 인스턴스를 식별할 수 있습니다.

re.search() 메서드가 대상 문자열 내에서 지정된 패턴의 인스턴스를 하나 이상 발견하면 패턴의 최초 발생을 반환합니다. 그러나 문자열 내에 존재하는 패턴의 모든 인스턴스를 검색하려는 경우에는 re.findall() 메서드를 대신 사용해야 합니다.

앞서 언급한 코드를 실행하여 제공된 링크의 기능을 테스트하면 초기 웹사이트는 작동하지만 나머지 웹사이트는 비활성 상태이거나 사용할 수 없는 것으로 나타났습니다.

자바스크립트에서 URL의 유효성을 검사하는 유사한 접근 방식은 다음 코드를 활용하는 것입니다:

function validateURL(url) {
   if(/^(http(s):\/\/.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/g.test(url)) {
        console.log('Valid');
    } else {
        console.log('Not Valid');
    }
}
 
validateURL("https://www.linkedin.com/");
validateURL("http://apple");
validateURL("iywegfuykegf");
validateURL("https://w");

앞서 언급한 프로세스는 자바스크립트 함수 match()를 규제된 표현 패턴과 함께 사용하여 초기 웹 주소의 유효성을 검증하는 동시에 나머지 URL의 상태에 관한 가정을 배제하는 것입니다.

정규식을 사용한 URL 유효성 검사의 실제 예제 및 사용 사례

정규식을 적용하여 URL을 유효성 검사하는 것은 다양한 웹 개발 및 데이터 처리 상황에서 가장 중요한 요소입니다. 이 개념에 대한 몇 가지 실용적인 예시는 다음과 같습니다:

정규식을 사용하여 웹 양식을 통해 입력된 URL의 적절성을 검증하여 규정된 규범을 준수하는지 확인하고 구문 오류 또는 보안 위반과 같은 잠재적인 문제를 완화할 수 있습니다.이러한 유효성 검사는 연락처 양식, 사용자 프로필 링크, 웹사이트 주소를 요청하는 텍스트 상자 등 다양한 디지털 플랫폼에서 구현될 수 있습니다.

이 글도 확인해 보세요:  Vite로 React 앱을 설정하는 방법

정규식은 지정 또는 도메인을 기반으로 특정 웹 주소를 선택적으로 수집하고 추출하는 수단을 제공하여 불필요하거나 위험할 수 있는 URL을 제외하면서 선호하는 출처에서 관련성 있는 정보만 획득할 수 있도록 합니다.

소셜 미디어 플랫폼 및 콘텐츠 관리 시스템과 같이 대량의 데이터를 처리하는 애플리케이션에서 URL의 유효성 검사는 매우 중요합니다. 정규식을 활용하면 깨지거나 허용되지 않는 URL을 감지하여 검증 프로세스를 수행하고 잘못된 링크를 삭제하거나 표시하는 등 필요한 조치를 취할 수 있습니다

정규식을 사용하여 중요 데이터 검증

정규식은 텍스트 검색, 식별 또는 분석의 목적으로 활용할 수 있습니다. 또한 자연어 처리, 패턴 인식 및 어휘 검사에도 일반적으로 사용됩니다.

이 유틸리티는 신용카드 번호, 사용자 프로필 정보, 인터넷 프로토콜(IP) 주소 등과 같은 필수 정보를 확인할 수 있습니다.

By 최은지

윈도우(Windows)와 웹 서비스에 대한 전문 지식을 갖춘 노련한 UX 디자이너인 최은지님은 효율적이고 매력적인 디지털 경험을 개발하는 데 탁월한 능력을 발휘합니다. 사용자의 입장에서 생각하며 누구나 쉽게 접근하고 즐길 수 있는 콘텐츠를 개발하는 데 주력하고 있습니다. 사용자 경험을 향상시키기 위해 연구를 거듭하는 은지님은 All Things N 팀의 핵심 구성원으로 활약하고 있습니다.