Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 정규 표현식으로 일치 항목 반복 처리하기

JavaScript에서는 match() 메서드와 정규 표현식을 조합하면 문자열 안에서 원하는 패턴과 일치하는 항목들을 손쉽게 찾아낼 수 있습니다. 특히 정규 표현식 끝에 전역(global) 플래그인 /g를 붙이면 첫 번째 일치 항목만 반환하는 것이 아니라, 문자열 전체에서 일치하는 모든 항목이 배열 형태로 반환됩니다. 이 배열을 forEach() 같은 반복문과 함께 사용하면 각 일치 항목을 순서대로 순회하며 처리할 수 있습니다.

예제 코드

다음은 주어진 문장에서 'at'이라는 패턴과 일치하는 모든 단어를 찾아, 일치 항목 개수만큼 결과를 반복해서 화면에 출력하는 전체 코드입니다.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result,
    .sample {
        font-size: 18px;
        color: blueviolet;
        font-weight: 500;
    }
    .sample {
        color: red;
    }
</style>
</head>
<body>
<h1>Looping over regex matches</h1>
<div class="sample">
There is a cat lying besides the cricket bat and chasing the rat
</div>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>Click on the above button to match words ending with 'at' in the above
sentence</h3>
<script>
    let BtnEle = document.querySelector(".Btn");
    let resEle = document.querySelector(".result");
    let sampleEle = document.querySelector(".sample");
    let text = sampleEle.innerHTML;
    BtnEle.addEventListener("click", () => {
        text.match(/at/g).forEach((element) => {
            resEle.innerHTML += 'Found a match ending with "at" <br>';
        });
    });
</script>
</body>
</html>

출력 결과

위 코드를 실행하면 초기 화면은 다음과 같습니다.

JavaScript 정규 표현식으로 일치 항목 반복 처리하기

'CLICK HERE' 버튼을 클릭하면 아래와 같이 일치 항목 개수만큼 메시지가 반복해서 표시됩니다.

JavaScript 정규 표현식으로 일치 항목 반복 처리하기

핵심 포인트 정리

  • /at/g : 'at'과 일치하는 모든 부분을 찾는 정규 표현식입니다. 마지막의 g(global) 플래그가 있어야 첫 번째 일치에서 멈추지 않고 문자열 전체를 검색합니다.
  • text.match(/at/g) : 일치한 모든 문자열을 요소로 가진 배열을 반환합니다. 예제 문장에는 cat, bat, rat에 포함된 'at'이 총 세 번 나타나므로 길이가 3인 배열이 반환됩니다.
  • forEach() : 반환된 배열을 순회하면서 일치 항목 하나당 한 줄씩 결과 영역에 메시지를 추가합니다.

이처럼 match() 메서드에 /g 플래그를 적용하고 반환된 배열을 반복 처리하면, 복잡한 루프 로직 없이도 정규 표현식 일치 항목을 간단하게 순회할 수 있습니다.