정규표현식 정리

juno·2022년 12월 1일
0

ZVON.org 참고

모든 표현 정리

표현식설명
^시작 부분
&끝 부분
\뒤에오는 표현식 문자로 취급
.모든 문자와 매치
[]박스안에 있는 문자 매치
[a-z]문자 순서 a~z까지 매치
[^a~z]:a~z까지 제외 매치
(on|bash|cell)3개의 단어중에 있어야 매치
a*ca가 0개 이상이고 c포함한 문자 매치
a+ca가 1개 이상이고 c포함한 문자 매치
a?ca가 1개 또는 0개이고 c포함한 문자 매치
{4}4번 반복 매치
{1,4}최소1번 반복 최대 4번반복 매치
{3,}3번이상 반복 매치
\w모든 단어와 매치("_"," " 포함)
\W\w가 아닌것
\d숫자
\D숫자가 아닌것
\sspace 공백
\S공백이 아닌 것

^ : 문자의 시작부분을 매칭

정규 표현식 : ^who
first match : Who is Who
all matches : who is who

&: 문자의 끝부분을 매칭

정규 표현식 : woh&
first match : who is who
all matches : who is who

\ : escape(뒤에오는 값은 문자로 표현)

  • step : 1
    정규 표현식: ^& => 시작과 끝부분 매칭 말이안됨
    first match : &12&-\&25&
    All matches : &12&-\&25&

  • step :2
    정규 표현식: \& => 문자'&'를 찾는다.
    first match : &12&-\&25&
    all matches : &12&-\&25&

  • step : 3
    정규 표현식: ^\& => 첫번쨰 문자'&'만 매치
    first match : &12&-\&12&
    all matches :&12&-\&12&

  • step : 4
    정규 표현식 : \&& => 맨뒤 문자 '&'만 매치
    first match : &12&-\&12&
    all matches : &12&-\&12&

. : 모든 문자열 매치

  • step : 1
    정규 표현식 : .
    first match : Regular expressions are powerful!!!
    all matches :Regular expressions are powerful!!!

  • step : 2
    정규 표현식 : ......(6개)
    first match : Regular expressions are powerful!!!
    all matches : Regular expressions are powerful!!! ==> 띄어쓰기도 포함 6개씩 묵어서 매치

  • step : 3
    정규 표현식 : . => '.' 매치
    first match : O.K.
    all matches : O.K.

  • step: 4
    정규 표현식 : ... => .(any). 형식의 문자를 찾는다.
    first match : O.K.
    all matches : O.K.

[] :박스안에 문자목록을 넣고 발견되면 해당 문자를 찾는다. 순서는 중요하지않음

  • step : 1
    정규 표현식 : [oyu]
    first match : How do you do?
    all matches : How do you do? => o,y,u 다 찾아서 매치

  • step : 2
    정규 표현식 : [dH]. => 문자'd','H' 뒤에 (any)문자 까지 매치
    first match : How do you do?
    all matches : How do you do?

  • step : 3
    정규 표현식 : [owy][yow] => 첫번쨰목록중,두번쨰목록이 맞는 2글짜 매치
    first match : How do you do?
    all matches : How do you do?

[a-z] : a에서 z까지

박스안에서 '-'를 사용하여 문자범위를 지정할 수 있다.

순서 원칙

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789

  • step : 1
    정규 표현식 : [C-K] : C~K까지
    first match : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789
    all matches : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

  • step : 2
    정규 표현식 : [CDEFGHIJK] => step 1과 같다
    first match : ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789
    all matches : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

  • step : 3
    정규 표현식 : [C-Ka-d2-6] => C~K,a~d,2~6 포함
    first match : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
    all matches : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

[^A~Z]: 박스안에 ^ 넣으면 박스안의 값 제외를 매치함

  • step : 1
    정규 표현식 : [^CDghi45]
    first match : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789
    all matches : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

  • step : 2
    정규 표현식 : [^W-Z]
    first match : ABCDEFGHIJKLMNOPQRSTUVWXYZ
    all matches : ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789

( on | use | rida ) : 3개의 묶음중 포함된 문자 매치

  • step : 1
    정규 표현식 : (on|ues|rida)
    first match : Monday Tuesday Friday
    all matches : Monday Tuesday Friday

  • step : 2
    정규 표현식 : (Mon|Tues|Fri)day => 묶음 + 뒤의 문자까지 매치
    first match : Monday Tuesday Friday
    all matches : Monday Tuesday Friday

a*b, a+b,a?b : 순서대로 'a'가 0개이상, 1개이상, 0또는1개 인것과 뒤의 'b'를 포함한 것을 매치한다.

  • stpe : 1
    정규 표현식 : a*b => a가 0개이상, b포함인 것을 매치
    first match : aabc abc bc
    all matches : aabc abc bc

  • step : 2
    정규 표현식 : a+b => a가 한개이상이고 b포함인 것 매치
    first match : aabc abc bc
    all matches : aabc abc bc

  • step : 3
    정규표현식 : a?b => a가 1개또는 0개 그리고 b포함 매치
    first match : aab abc bc
    all matches : aabc ab bc

  • step : 4
    정규 표현식 : .* => *가 0개이상이므로 전부 매치함
    first match : -@- -- "" -- * -@-
    all matches : -@- -- "" -- * -@-

  • step : 5
    정규 표현식 : -A*- => A가 0개여도 매치가 된다.
    first match : -@- -- "" -- * -@-
    all matches : -@- -- "" -- * -@-

  • step : 6
    정규 표현식 : [-@]* => []안쪽의 조건 해당되는 연속되는 문자 매치
    first match : -@- -- "" -- * -@-
    all matches : -@- -- "" -- * -@-

  • step : 7
    정규 표현식 : \*+ => * 를 1개이상인 것 매치
    first match : -@@@- * - - "" -- -@@@-
    all matches : -@@@- * ** - - "*" -- * ** -@@@-

-stpe : 8
정규 표현식 : -@+- => - 사이의 @이가 1개이상이면 매치
first match : -@@@- * - - "*" -- * ** -@@@-
all matches : -@@@- *
- - "*" -- * ** -@@@-

  • step : 9
    정규 표현식 : [^ ]+ => 띄어쓰기가 1개이상 없는 부분 매치
    first match : -@@@- * - - "*" -- * -@@@-
    all matches : -@@@- ** - - "*" -- ** -@@@-
  • step : 10
    정규 표현식 : -X?XX?X => X가 2~4개면 매치
    first match : --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
    all matches : --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
  • step : 11
    정규 표현식 : -@?@?@?-
    first match : --XX-@-XX-@@-XX-@@@-XX-@@@@-
    all matches : --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
  • step : 12
    정규 표현식 : [^@]@?@ => @가 2개또는 1개 있고 그앞에 (any)1개 포함
    first match : --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-
    all matches : --XX-@-XX-@@-XX-@@@-XX-@@@@-XX-@@-@@-

{4},{1,3} : 순서대로 4번반복, 최소1번 최대 3번 반복

  • step : 1
    정규 표현식 : .{5} => 아무문자나 5개 매치
    first match : One ring to bring them all and in the darkness bind them
    all matches : One ring to bring them all and in the darkness bind them

  • step : 2
    정규 표현식 : [els]{1,3} []안의 값중 1~3개 매치
    first match : One ring to bring them all and in the darkness bind them
    all matches : One ring to bring them all and in the darkness bind them

  • step : 3
    정규 표현식 : [a-z]{3,} => ,를 찍으면 3개 이상 다 반복
    first match : One ring to bring them all and in the darkness bind them
    all matches : One ring to bring them all and in the darkness bind them

  • step : 4
    정규 표현식 : AB{0,}A
    first match : AA ABA ABBA ABBBA
    all matches : AA ABA ABBA ABBBA

\w : 모든 단어 문자(영문자와 "_", " ")와 매치

  • step : 1
    정규표현식 : \w => 같은표현으로 '[A-z0-9_]' 도 사용 한다.
    first match : A 1 B2 c3 d4 e:5 ffGG77--__--
    all matches : A 1 B 2 c 3 d
    4 e : 5 f G G 7 7 -- _ --

활용 예시


const text = "정규표현식 질문 문의 : http://jjjjjjj.com http://google.com 
				010-1111-2222 02-333-7777 juno97@aaa.com";

// 전화번호 찾기
const phone =text.match(/\d{2,3}-\d{3,4}-\d{4}/g);

console.log(phone)
 //  ['010-1111-2222', '02-333-7777']

// email 찾기
const email = text.match(/[\w\-\.]+\@[\w\-\.]+/g); // 

console.log(email)
  // [ 'juno97@aaa.com' ]

추가적으로 맨뒤의 'g'는 정규표힌식 플래그이다.

  • 정규표현식 플래그

표현식설명
gGlobal: 모든 문자 검색(안 쓰면 매칭되는 첫 문자만 검색)
iignore Case: 대소문자 구분안함 (무지편함!!)
mMulti line: 여러 행의 문자열에 대해 검색

동시에 여러개 사용가능 (ex: gi, gm)

profile
안녕하세요 인터랙션한 웹 개발을 지향하는 프론트엔드 개발자 입니다. https://kimjunho97.tistory.com => 블로그 이전 중

0개의 댓글