-
정규식에 대한 이해와 예시 from ChatGPT사소한 개발팁 2023. 4. 30. 17:59반응형
정규식(Regular Expression)은 문자열의 패턴을 표현하는 방법입니다. 문자열에서 특정한 문자 또는 문자열의 집합을 찾거나, 특정한 문자열을 대체하거나, 특정한 문자열을 추출하는 등 다양한 작업을 할 수 있습니다. 정규식은 다양한 프로그래밍 언어와 도구에서 지원하며, 앱 개발에서도 자주 사용됩니다.
다음은 자주 사용되는 특수기호입니다.
^ : 문자열의 시작을 나타냅니다.
$ : 문자열의 끝을 나타냅니다.
. : 임의의 한 문자를 나타냅니다.
: 앞선 문자나 문자열이 0번 이상 반복됨을 나타냅니다.
: 앞선 문자나 문자열이 1번 이상 반복됨을 나타냅니다.
? : 앞선 문자나 문자열이 0 또는 1번만 나타남을 나타냅니다.
[] : 문자 집합을 표현합니다. 대괄호 안에 들어 있는 문자 중 하나와 일치합니다.
[^] : 문자 집합을 부정합니다. 대괄호 안에 들어 있지 않은 문자와 일치합니다.
() : 그룹을 나타냅니다. 그룹 안에 있는 문자열을 추출하거나 대체할 수 있습니다.
| : OR 연산을 나타냅니다. 양쪽의 문자나 문자열 중 하나와 일치합니다.
이외에도 많은 특수기호와 기능이 있으며, 정규식은 매우 강력하고 유용한 도구입니다. 하지만 복잡한 패턴을 표현할 때는 이해하기 어려울 수 있으므로, 필요한 경우에는 정규식을 작성하는데 도움을 주는 도구를 사용하는 것이 좋습니다.이메일 주소는 일반적으로 다음과 같은 형식을 갖습니다.
여기서 username은 이메일 주소의 사용자 이름을 나타내고, example.com은 이메일 주소를 호스팅하는 도메인 이름을 나타냅니다. 이메일 주소를 정규식으로 표현하면 다음과 같이 될 수 있습니다.
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
위의 정규식을 각 부분으로 나누어 설명하면 다음과 같습니다.
^ : 문자열의 시작을 나타냅니다.
[a-zA-Z0-9.%+-]+ : 이메일 주소의 사용자 이름을 나타냅니다. [a-zA-Z0-9.%+-]는 알파벳 대소문자, 숫자, 밑줄(_), 마침표(.), 퍼센트(%), 더하기(+), 하이픈(-) 중 하나 이상이 나타날 수 있음을 나타냅니다. +는 해당 문자열이 하나 이상 반복될 수 있음을 나타냅니다.
@ : 이메일 주소의 사용자 이름과 도메인 이름을 구분하는 구분자입니다.
[a-zA-Z0-9.-]+ : 이메일 주소의 도메인 이름을 나타냅니다. [a-zA-Z0-9.-]는 알파벳 대소문자, 숫자, 마침표(.), 하이픈(-) 중 하나 이상이 나타날 수 있음을 나타냅니다. +는 해당 문자열이 하나 이상 반복될 수 있음을 나타냅니다.
. : 도메인 이름의 각 섹션을 구분하는 마침표(.)를 나타냅니다. 마침표는 특수문자이므로 이스케이프 문자()로 나타내야 합니다.
[a-zA-Z]{2,} : 이메일 주소의 도메인 이름의 최상위 도메인(top-level domain)을 나타냅니다. [a-zA-Z]{2,}는 알파벳 대소문자 중 두 개 이상으로 이루어져 있음을 나타냅니다.
$ : 문자열의 끝을 나타냅니다.
위의 정규식은 대부분의 경우에 사용할 수 있지만, 모든 경우에 정확하게 일치하지는 않습니다. 예를 들어, 다음과 같은 이메일 주소는 위의 정규식에 일치하지 않을 수 있습니다.user.name@example.co.kr : 도메인 이름의 최상위 도메인이 세 글자 이상인 경우에는 일치하지 않을 수 있습니다. 이러한 경우에는 정규식을 더 구체적으로 작성해야 합니다.
또한, 이메일 주소는 매우 복잡한 구조를 가지므로 정규식을 사용하여 이메일 주소를 완벽하게 검증하는 것은 어려울 수 있습니다. 이러한 이유로, 이메일 주소를 검증하는 가장 좋은 방법은 이메일 주소를 보낸 후에 수신자가 이메일 주소를 올바르게 입력했는지 확인하는 것입니다.
이메일 주소 외에도, 정규식은 다양한 용도로 사용됩니다. 예를 들어, 전화번호, 우편번호, URL 등을 검증하는 데에도 사용됩니다. 다른 예시로는, 앱에서 비밀번호를 설정할 때 특정 문자를 요구하는 정책이 있을 수 있는데, 이때도 정규식을 사용하여 비밀번호가 정책에 맞는지 확인할 수 있습니다.
반응형'사소한 개발팁' 카테고리의 다른 글
Test Flight, App Store Connet에서 암화화 문서 관련 규정 매번 설정하지 않는 방법 (1) 2024.01.05 앱을 빌드하다 보면 생기는 사사롭지만 괴로운 일 (0) 2024.01.04 이메일 양식을 위한 정규식 (0) 2023.04.23 [VSCode] VSCode에서 explorer.compactFolders 세팅하는 방법 (0) 2023.03.27 [VSCode] vscode로 이미 만든 프로젝트를 깃헙에 추가하는 방법을 알려줘 (0) 2023.03.26