JS/JS 공부

[JS] 정규표현식 Regular Expression

congs 2023. 4. 17. 17:09

정규식 Regular Expression

: 문자열에서 특정 내용을 찾거나 대체, 발췌하는데 사용

 

  • regex  단어로 많이 표현됨
  • 특정데이터를 탐색, 확인, 존재여부 등을 쉽게 확인하기 위한 규칙
  • 웹 분야 ) password 작성규칙, 첨부파일등에 사용 (자주사용x)
  • 데이터 분석 분야 )  반드시 알아야함
  • 타 언어에서도 비슷한 형식 (알고있으면 편리)

 

작성규칙

/ regexr / i 

// : 시작, 종료기호
regexr : pattern 패턴
i : flag

 

flag옵션

i : 대소문자 구분x
g : 전체 검색
m : 문자열의 행이 바뀌어도 검색 (행바꿈도 포함 검색)
- 붙여서 2개사용도 가능

a-zA-Z : 영어 알파벳 전체포함
ㄱ-ㅎ가-힣 : 한글 전체포함
0-9 : 숫자 전체포함
. : 모든 문자열 포함(숫자, 한글, 영어, 특수기호, 공백 등 줄바꿈 제외 모두 포함)

\d : 숫자
\D : 숫자가 아닌 것 (숫자 제외)
\s : 공백(space)
\S : 공백 제외
\w : 영어,숫자, _ 
\W : 영어,숫자, _ 가 아닌것
\특수기호 : \! \@ ... : 특수기호를 포함할 것인지

 

검색 패턴

| : or ( a|b )

[ ] : 괄호안의 문자들 중 하나 (or 처리의 묶음으로 보면 됨)
   /abc/ : abc를 포함하는
   /[abc]/ : 'a' 또는 'b '또는 'c'를 포함하는
   [다-바] : '다 '또는 '라' 또는 '마' 또는 '바' 를 포함하는

[^문자] : 괄호안의 문자를 제외한 것
   [^abcd] : a,b,c,d 4개문자를 제외

^문자열$ : ^(시작) $(끝)   -> 띄어쓰기X

 

메서드

("str").match(/regexr/flag) 

str에서 매칭되는 항목들을 배열로 반환

 

("str").replace(/regexr/, "바꿀문자열" )

정규표현식에 매칭되는 항목을 바꿀문자열로 반환

 

("str").split(/regexr/) 

문자열을 정규표현식에 매칭되는 항목으로 쪼개어 배열로 반환

 

(정규표현식).test("str")

문자열이 정규표현식 규칙에 맞으면 true / 아니면 false

 


사용

사용 예시 ) 전체에서 la가 포함된 것을 출력

<body>
    <script>
        let testText = 'This is Javascript Regular Expression';
        // 전체에서 la가 포함된 것을 배열로 출력
        console.log(testText.match(/[la]/g)); // l과 a 추출
        console.log(testText.match(/la/g)); // la 추출
        console.log(testText.match(/is/g)); // is 추출

 
    </script>

 

사용 예시 ) 배열을 탐색해 하나의 문자열에 pngg, jpg, jpeg, gif가 있으면 출력

<body>
    <script>

        const fileName = ['abc.jpg', 'main.gif', 'doc.pdf', 'movie.mpg', 'code.js'];
       
        // 배열을 탐색해 하나의 문자열에 png, jpg, jpeg, gif가 있는지 확인 출력
        for(const file of fileName){
            if(file.match(/(jpg|jpeg|png|gif)/i)){
                console.log(`이미지 파일 : ${file}`);
            } else {
                console.log(`그외 파일: ${file}`);
            }
        }
    </script>