개발하는 체대생

정규식(Regular Expressions)을 사용하여 회원가입 만들기 본문

카테고리 없음

정규식(Regular Expressions)을 사용하여 회원가입 만들기

개발하는체대생

정규식이란?

정규식(Regular Expression)은 문자열에서 특정 패턴을 찾거나, 대체하거나, 추출하는 데 사용되는 문자열 검색 패턴입니다. 즉, 특정 문자열에 대한 규칙을 나타내는 문자열입니다.

 

Java에서 정규식 규칙

Java에서는 정규식 규칙이 다음과 같이 작성됩니다.

  1. 메타 문자: 정규식에서 특별한 의미를 가지는 문자입니다. 예를 들어, .(마침표)는 모든 문자를 나타내고, ^는 문자열의 시작 부분을 나타냅니다.
  2. 문자 집합: 문자 집합을 사용하면, 해당 문자 집합 내의 모든 문자 중 하나와 일치하는 문자를 찾을 수 있습니다. 예를 들어, [abc]는 a, b, c 중 하나와 일치하는 문자를 찾습니다.
  3. 반복: 특정 문자나 문자 집합이 반복되는 횟수를 지정할 수 있습니다. 예를 들어, a{3}은 aaa와 일치하며, a{2,4}는 aa, aaa, aaaa와 일치합니다.
  4. 그룹화: 괄호를 사용하여 그룹을 만들고, 해당 그룹에 대해 반복 및 다른 작업을 수행할 수 있습니다. 예를 들어, (abc)+는 abc, abcabc, abcabcabc와 일치합니다.

 

각 문자열의 의미

  1. . (마침표) : 임의의 한 문자를 나타냅니다. 예를 들어, 정규식 a.c는 "abc", "afc", "a2c"와 같은 문자열과 일치합니다.
  2. * (별표) : 바로 앞에 있는 문자가 0회 이상 반복됨을 나타냅니다. 예를 들어, 정규식 ab*c는 "ac", "abc", "abbc"와 같은 문자열과 일치합니다.
  3. + (플러스) : 바로 앞에 있는 문자가 1회 이상 반복됨을 나타냅니다. 예를 들어, 정규식 ab+c는 "abc", "abbc", "abbbc"와 같은 문자열과 일치합니다.
  4. ? (물음표) : 바로 앞에 있는 문자가 0회 또는 1회 등장함을 나타냅니다. 예를 들어, 정규식 ab?c는 "ac", "abc"와 같은 문자열과 일치합니다.
  5. [] (대괄호) : 대괄호 안에 있는 문자 중 하나와 일치함을 나타냅니다. 예를 들어, 정규식 [abc]는 "a", "b", "c" 중 하나와 일치합니다.
  6. {} (중괄호) : 중괄호 안에 있는 숫자 범위만큼 바로 앞에 있는 문자가 반복됨을 나타냅니다. 예를 들어, 정규식 a{2,3}는 "aa", "aaa"와 같은 문자열과 일치합니다.
  7. ^ (시작) : 해당 문자열의 시작 부분을 나타냅니다. 예를 들어, 정규식 ^abc는 "abc"로 시작하는 문자열과 일치합니다.
  8. $ (끝) : 해당 문자열의 끝 부분을 나타냅니다. 예를 들어, 정규식 abc$는 "abc"로 끝나는 문자열과 일치합니다.
  9. () (괄호) : 괄호 안에 있는 문자열을 그룹으로 묶어 처리할 수 있습니다. 예를 들어, 정규식 (ab)+는 "ab", "abab", "ababab"와 같은 문자열과 일치합니다.
정규식(Regular Expression) Description
^ 문자열의 시작
$ 문자열의 끝
. 임의의 한 문자
* 문자가 0번 이상 발생 ( = {0,})
+ 문자가 1번 이상 발생 ( = {1,})
? 문자가 0번 혹은 1번 발생 ( = {0, 1})
[ ]  문자의 집합 범위를 나타냄

[0-9] : 숫자 (0부터 9)
[a-z] : 알파벳 (a부터 z)

앞에 ^가 나타나면 not을 의미
{ }  횟수 또는 범위를 의미

{n} : 앞 문자가 n개
{n,} 앞문자가 n개 이상
{n, m}: 앞 문자가 n개 이상, m개 이하
( )  소괄호 안의 문자를 하나의 문자로 인식
|  or 조건
\ 확장 문자의 시작 
\b 단어의 경계
\B 단어가 아닌 것의 경계
\A 입력의 시작부분
\G 이전 매치의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\z 입력의 끝
\s 공백문자
\S 공백문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d [0-9]와 동일
\D 숫자를 제외한 모든 문자

 

 

정규식 예시

/^(?=.*[a-zA-Z])[-a-zA-Z0-9_.]{2,10}$/


	//	/^(시작) $/(끝)
    //  (?=.*[a-zA-Z]) => 영문 소문자와, 영문 대문자가 꼭 있어야한다.
    //	[-a-zA-Z0-9_.] => 영문소문자와, 대문자, 숫자, _,. 등을 사용가능하다.
    //	{2,10} => 2글자 ~ 10글자

 

 

참고블로그 : https://runa-nam.tistory.com/103

 

[Regex] 정규식이란?

1. Regex, 왜 필요하지? 프리코스 3주차에서도 Regex와 관련된 포스팅을 한 적이 있는데, (그때는 배웠던 내용중의 일부로 넣었었다.) 이번에도 피드백을 받는 과정에서 정규식과 관련된 이야기들이

runa-nam.tistory.com

정규식 쉽게 사용하기(유튜브) : https://youtu.be/2P0oSNguGXI

 

Comments