Study/개발 Tip

[Regex Code Util] Useful Regex Code Snippets For Web Developers | 웹 개발자를위한 유용한 정규식 코드 조각

AC 2021. 6. 21. 05:57

 

Regex Code Util

정규식은 모든 개발자의 도구 벨트에 있어야하는 강력한 도구입니다. 매우 복잡한 매개 변수를 기반으로 한 문자열과 일치시킬 수 있으므로 동적 웹 사이트를 구축 할 때 많은 시간을 절약 할 수 있습니다.

웹 개발자는 소프트웨어 개발자와 다른 작업에 직면하지만 동일한 코드 기본 사항이 많이 남아 있습니다. 정규식 (또는 정규식 )은 초기 학습 곡선  가파르 지만 올바르게 사용하면 매우 강력 할 수 있습니다 .

가장 까다로운 부분은 구문을 배우고 처음부터 자신의 정규식 코드를 작성하는 방법을 배우는 것입니다. 시간을 절약하기 위해 개발 프로젝트에 통합 할 수있는 30 개의 서로 다른 정규식 코드 조각을 구성했습니다. 정규식은 단일 언어에 국한되지 않으므로 이러한 코드 조각을 JavaScript 에서 PHP 또는 Python 에 이르기까지 모든 것에 적용 할 수 있습니다 .

1. 암호 강도`^(?=.*[A-Z].*[A-Z])(?=.*[!@` `#DISCOURSE_PLACEHOLDER_2*])(?=.*[0-9].*[0-9])(?=.*[a-z].*[a-z].*[a-z]).{8}$`

비밀번호의 강도를 확인하는 것은 종종 주관적이므로 절대적인 정답이 없습니다. 그러나 처음부터 자신의 암호 강도 검사기를 작성하고 싶지 않은 경우이 정규식 코드 조각이 훌륭한 시작점이라고 생각합니다. ( 출처 )

2. 16 진수 색상

\ #([a-fA-F]|[0-9]){3, 6}

웹 개발 분야는 16 진수 색상 코드로 어디에나 있습니다. 이 정규식 스 니펫은 어떤 목적 으로든 문자열에서 16 진 코드 일치를 가져 오는 데 사용할 수 있습니다. ( 출처 1)

3. 이메일 주소 확인

/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]{2,4}/igm

개발자의 가장 일반적인 작업 중 하나는 문자열이 전자 메일 주소 스타일로 형식화되었는지 확인하는 것입니다. 이 작업을 수행 할 수있는 다양한 변형이 있으므로이 SitePoint 링크는 문자열에 대해 전자 메일 구문을 확인하기위한 두 가지 고유 한 코드 조각을 제공합니다. ( 출처 2)

4. IPv4 주소

/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/

이메일 주소와 유사하게 인터넷에 액세스하는 특정 컴퓨터를 식별하는 데 사용되는 일반적인 IP 주소입니다. 이 정규식은 문자열이 IPv4 주소 구문을 따르는 지 확인합니다. ( 출처 1)

5. IPv6 주소

(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))

또는 이 고급 정규식 스 니펫 을 사용하여 최신 IPv6 구문 의 주소를 확인할 수도 있습니다 . 차이는 작지만 개발 과정에서 중요합니다. ( 출처 1)

6. 수천 개의 분리기

/\d{1,3}(?=(\d{3})+(?!\d))/g

전통적인 번호 매기기 시스템은 더 큰 숫자의 세 자리마다 쉼표, 마침표 또는 기타 표시가 필요합니다. 이 정규식 코드 (숫자에서 작동하고 수천, 수백만 등으로 분리 모든 세 번째 자리에 선택하는 어떤 표시를 적용합니다 소스 2)

7. 하이퍼 링크 앞에 HTTP 추가

if (!s.match(/^[a-zA-Z]+:\/\ //))

{

s = 'http://' + s;

}

JavaScript, Ruby 또는 PHP에서 작업하든이 정규식은 매우 유용 할 수 있습니다. HTTP / HTTPS 접두사가 있는지 확인하기 위해 URL 문자열을 확인하고 그렇지 않은 경우 그에 따라 앞에 추가합니다. ( 출처 )

8. URL에서 도메인 가져 오기

/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i

모든 웹 사이트 도메인에는 초기 프로토콜 (HTTP 또는 HTTPS)이 포함되며 종종 하위 도메인과 추가 페이지 경로가 포함됩니다. 이 스 니펫을 사용하여 모든 것을 잘라 내고 추가 요령없이 도메인 이름 만 반환 할 수 있습니다.

9. 단어 수로 키워드 정렬

^[^\s]*$ matches exactly 1-word keyword

^[^\s]*\s[^\s]*$ matches exactly 2-word keyword

^[^\s]*\s[^\s]* matches keywords of at least 2 words (2 and more)

^([^\s]*\s){2}[^\s]*$ matches exactly 3-word keyword

^([^\s]*\s){4}[^\s]*$ matches 5-words-and-more keywords (longtail)

Google Analytics 및 웹 마스터 도구 사용자는이 정규식을 정말 좋아할 것입니다. 검색에 사용 된 단어 수에 따라 키워드를 정렬하고 구성 할 수 있습니다.

이것은 숫자로 특정하거나 (즉, 5 개 단어 만) 단어 범위와 일치 할 수 있습니다 (예 : 2 개 이상의 단어). 분석 데이터를 정렬하는 데 사용할 때 이것은 하나의 강력한 표현입니다. ( 출처 1)

10. PHP에서 유효한 Base64 문자열 찾기

\?php[ \t]eval\(base64_decode\(\'(([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?){1}\'\)\)\;

PHP 개발자라면 어떤 시점에서 Base64로 인코딩 된 바이너리 객체를 찾는 코드를 파싱해야 할 수도 있습니다. 이 스 니펫은 모든 PHP 코드에 적용 할 수 있으며 기존 Base64 문자열을 확인합니다. ( 출처 )

11. 유효한 전화 번호

^\+?\d{1,3}?[- .]?\(?(?:\d{2,3})\)?[- .]?\d\d\d[- .]?\d\d\d\d$

짧고, 달콤하고, 요점. 이 정규식 코드는 주로 미국식 전화 번호를 기반으로하는 기존 전화 번호 구문의 유효성을 검사합니다.

이것은 상당히 복잡한 주제로 바뀔 수 있으므로 더 자세한 답변을 얻으려면 이 스택 스레드  훑어 보는 것이 좋습니다 . ( 출처 )

12. 선행 및 후행 공백

^[ \s]+|[ \s]+$

이 코드 조각을 사용하여 문자열에서 선행 / 후행 공백을 제거합니다. 이것은 큰 문제는 아니지만 때로는 데이터베이스에서 가져 오거나 다른 문서 인코딩에 적용될 때 출력에 영향을 미칠 수 있습니다. ( 출처 )

13. 풀 이미지 소스)

\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)

어떤 이유로 HTML에서 직접 이미지 소스를 가져와야하는 경우이 코드 스 니펫이 완벽한 솔루션입니다. 백엔드에서 원활하게 실행될 수 있지만 프론트 엔드 JS 개발자는 대신 프론트 엔드에 대해 jQuery의 .attr () 메소드에 의존해야합니다 . ( 출처 )

14. DD / MM / YYYY 형식으로 날짜 확인

^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

날짜는 텍스트 + 숫자로 표시되거나 다른 형식의 숫자로 표시 될 수 있으므로 까다 롭습니다. PHP에는 환상적인 날짜 기능이 있지만 원시 문자열을 가져올 때 항상 최선의 선택은 아닙니다. 대신이 특정 날짜 구문에 대해 만들어진이 정규식을 사용하는 것이 좋습니다. ( 출처 )

15. YouTube 동영상 ID 일치

/http:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?| #\!)v=)([\w-]{11}).*/gi

YouTube는 작동하기 때문에 수년 동안 동일한 URL 구조를 유지했습니다. 또한 웹에서 가장 인기있는 동영상 공유 사이트이므로 YouTube 동영상이 가장 많은 트래픽을 유도하는 경향이 있습니다.

URL에서 YouTube 동영상 ID를 가져와야하는 경우이 정규식 코드는 완벽하며 YouTube URL 구조의 모든 변형에서 완벽하게 작동합니다. ( 출처 )

16. 유효한 ISBN

/\b(?:ISBN(?:: ?| ))?((?:97[89])?\d{9}[\dx])\b/i

인쇄 된 책은 ISBN으로 알려진 번호 체계를 따릅니다. ISBN-10과 ISBN-13의 차이점을 고려할 때 다소 까다로울 수 있습니다.

그러나이 놀라운 스 니펫을 사용하면 ISBN 번호를 확인하고 ISBN10 또는 13인지 확인할 수 있습니다. 모든 코드는 PHP로 작성되었으므로 웹 개발자에게 매우 유용 할 것입니다. ( 출처 )

17. 우편 번호 확인

^\d{5}(?:[-\s]\d{4})?$

이 스 니펫의 제작자는 자신의 작품을 무료로 공개했을뿐만 아니라 시간을 들여 설명했습니다. 이 스 니펫은 일반적인 5 자리 우편 번호 또는 더 긴 9 자리 버전과 일치하는지 여부에 관계없이 유용합니다.

이것은 주로 미국 우편 번호 시스템을위한 것이므로 다른 국가에 대한 조정이 필요할 수 있습니다. ( 출처 )

18. 유효한 Twitter 사용자 이름

/@([A-Za-z0-9_]{1,15})/

다음은 문자열에서 찾은 Twitter 사용자 이름과 일치하는 아주 작은 코드 스 니펫입니다. 트윗 (또는 트윗)의 내용을 자동으로 스캔하는 데 적합한 @mention 구문을 확인합니다 . ( 출처 )

19. 신용 카드 번호

^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$

신용 카드 번호를 확인하려면 온라인에서 호스팅되는 보안 플랫폼이 필요합니다. 그러나 정규식은 일반적인 신용 카드 번호의 최소 요구 사항에 사용할 수 있습니다.

개별 카드에 대한보다 포괄적 인 코드 목록은 여기에서 확인할 수 있습니다 . 2. 여기에는 Visa, MasterCard, Discover 등이 포함됩니다. ( 출처 )

20. CSS 속성 찾기

^\s*[a-zA-Z\-]+\s*[:]{1}\s[a-zA-Z0-9\s. #]+[;]{1}

CSS를 통해 정규식을 실행하는 것은 드물지만 믿을 수 없을 정도로 이상한 상황도 아닙니다.

이 코드 조각은 개별 선택기에서 일치하는 모든 CSS 속성 및 값을 가져 오는 데 사용할 수 있습니다. CSS 청크를 보거나 중복 속성을 제거하기 위해 여러 가지 이유로 사용할 수 있습니다. ( 출처 )

21. HTML 주석 제거

<!--(.*?)-->

어떤 이유로 든 HTML 블록에서 모든 주석을 제거해야하는 경우 사용할 정규식 코드입니다. 표현식과 함께 preg_replace 를 사용하는 PHP 예제를 찾을 수 있습니다. ( 출처 )

22. Facebook 프로필 URL

/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)* #!\/)?(?:pages\/)?(?:[\w\-]*\/)*([\w\-]*)/

Facebook은 엄청나게 인기가 높으며 다양한 URL 체계를 거쳤습니다. 사용자로부터 프로필 URL을 가져 오는 상황에서는 문자열을 구문 분석하고 올바르게 구성되었는지 확인하는 것이 도움이 될 수 있습니다. 이 스 니펫은이를 정확히 수행 할 수 있으며 모든 FB 스타일 링크에 적합합니다. ( 출처 )

23. Internet Explorer 버전 확인

^.*MSIE [5-8](?:\.[0-9]+)?(?!.*Trident\/[5-9]\.0).*$

Microsoft의 Edge 로의 이전은 만장일치가 아니며 많은 사람들이 여전히 고전적인 Internet Explorer에 의존합니다. 개발자는 종종 렌더링 엔진의 불일치를 처리하기 위해 IE 버전을 확인해야합니다.

이 스 니펫은 JavaScript에서 사용되는 Internet Explorer 버전 (5-11)을 기반으로 브라우저 에이전트를 테스트하는 데 사용할 수 있습니다. ( 출처 )

24. 가격 추출

/(\$[0-9,]+(\.[0-9]{2})?)/

가격은 소수, 쉼표 및 통화 기호를 포함하는 다양한 형식으로 제공됩니다. 이 정규 표현식은 이러한 모든 형식을 확인하여 모든 문자열에서 가격을 가져올 수 있습니다. ( 출처 )

25. 이메일 헤더 구문 분석

/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,6}\b/i

이 한 줄의 코드를 사용하면 이메일 헤더를 구문 분석하여 헤더에서 "받는 사람"정보를 가져올 수 있습니다. 함께 결합 된 여러 이메일과 함께 사용할 수 있습니다.

이 작업에 대한 정규식을 피하려면 대신 구문 분석 라이브러리 에 의존 할 수 있습니다 . ( 출처 )

26. 특정 파일 유형 일치

/^(.*\.(?!(htm|html|class|js)$))?[^.]*$/i

.xml, .html 및 .js와 같은 다양한 파일 형식을 다룰 때 로컬 및 사용자가 업로드 한 파일을 모두 확인하는 데 도움이 될 수 있습니다. 이 스 니펫은 파일 확장자를 가져 와서 필요에 따라 변경할 수있는 일련의 유효한 확장자에서 유효한지 확인합니다. ( 출처 )

27. URL 문자열 일치

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

이 스 니펫은 HTTPS 및 HTTP 문자열 모두에 사용되어 텍스트가 기존 TLD 도메인 구문과 일치하는지 확인할 수 있습니다. JavaScript의 RegExp를 사용하는이 정규식의 간단한 구현도 있습니다 . ( 출처 )

28. 링크에 rel =”nofollow”추가

(<a\s*(?!.*\brel=)[^>]*)(href= "https?://)((?!(?:(?:www\.)?'.implode('|(?:www\.)?', $follow_list).'))[^" ]+)"((?!.*\brel=)[^>]*)(?:[^>]*)>

HTML 코드 배치로 작업하는 경우 반복적 인 작업에 수작업을 적용하는 것이 끔찍할 수 있습니다. 정규 표현식은이 경우에 완벽하며 많은 시간을 절약 할 수 있습니다.

이 스 니펫은 HTML 블록에서 모든 앵커 링크를 가져와 모든 요소에 rel =”nofollow” 속성을 추가 할 수 있습니다. 이 코드를 작성한 개발자는 PHP로 작업 예제와 원시 표현식을 게시 할 수있을만큼 친절했습니다.

29. 미디어 쿼리 일치

/@media([^{]+)\{([\s\S]+?})\s*}/g

CSS 미디어 쿼리를 매개 변수와 속성으로 분리합니다. 이렇게하면 코드가 작동하는 방식에보다 직접적으로 초점을 맞춰 외부 CSS를보다 깔끔하게 분석 할 수 있습니다. ( 출처 )

30. Google 검색 구문

/([+-]?(?: '.+?' | ".+?" |[^+\- ]{1}[^ ]*))/g

Google의 상표 구문을 사용하여 검색 가능한 텍스트를 조작하기위한 고유 한 정규식 코드를 작성할 수 있습니다. 더하기 기호 (+)는 추가 키워드를 나타내고 빼기 기호 (-)는 무시하고 결과에서 제거해야하는 단어를 나타냅니다.

다소 복잡한 스 니펫이지만 적절하게 사용하면 자체 검색 알고리즘을 구축하기위한 기반을 제공 할 수 있습니다.

LIST