코딩 스쿨 JavaScript

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP
▶ JavaScript Tutorial
JavaScript HOME
JavaScript Introduction
JavaScript Where To
JavaScript Output
JavaScript Statements
JavaScript Syntax
JavaScript Comments
JavaScript Variables
JavaScript Let
JavaScript Const
JavaScript Operators
JavaScript Arithmetic
JavaScript Assignment
JavaScript Data Types
JavaScript Functions
JavaScript Objects
JavaScript Object Properties
JavaScript Object Methods
JavaScript Object Display
JavaScript Object Constructors
JavaScript Events
JavaScript Strings
JavaScript String Methods
JavaScript String Search
JavaScript String Templates
JavaScript Numbers
JavaScript BigInt
JavaScript Number Methods
JavaScript Number Properties
JavaScript Arrays
JavaScript Array Methods
JavaScript Array Search
JavaScript Array Sort
JavaScript Array Iteration
JavaScript Array Const
JavaScript Dates
JavaScript Date Formats
JavaScript Date Get Methods
JavaScript Date Set Methods
JavaScript Math
JavaScript Random
JavaScript Booleans
JavaScript Comparisons
JavaScript If Else
JavaScript Switch
JavaScript Loop For
JavaScript Loop For In
JavaScript Loop For Of
JavaScript Loop While
JavaScript Break
JavaScript Iterables
JavaScript Sets
JavaScript Set Methods
JavaScript Maps
JavaScript Map Methods
JavaScript Typeof
JavaScript Type Conversion
JavaScript Destructuring
JavaScript Bitwise
JavaScript RegExp
JavaScript Precedence
JavaScript Errors
JavaScript Scope
JavaScript Hoisting
JavaScript Strict Mode
JavaScript this Keyword
JavaScript Arrow Function
JavaScript Classes
JavaScript Modules
JavaScript JavaScriptON
JavaScript Debugging
JavaScript Style Guide
JavaScript Best Practices
JavaScript Mistakes
JavaScript Performance
JavaScript Reserved Words

JavaScript RegExp

JavaScript RegExp: 정규 표현식의 이해와 활용

JavaScript RegExp(정규 표현식, Regular Expression)는 문자열 내에서 특정 패턴을 검색하거나 일치하는 부분을 추출, 대체하는 데 사용되는 강력한 도구입니다. 정규 표현식은 특정 텍스트 패턴을 정의하고, 이를 통해 텍스트에서 일치하는 부분을 찾거나 변경하는 데 유용합니다.

이 가이드는 JavaScript에서 **정규 표현식(RegExp)**의 기본 사용법과 다양한 패턴, 그리고 주요 메서드를 설명합니다.


1. 정규 표현식의 기본 개념

정규 표현식특정 패턴을 표현하는 문자열입니다. 이를 통해 문자열을 검색하거나 조작할 수 있으며, 문자열 검색, 검증, 치환 작업에 많이 사용됩니다.

1.1. 정규 표현식 생성 방법

JavaScript에서 정규 표현식을 생성하는 방법은 두 가지입니다.

1.1.1. 리터럴 표기법

리터럴 표기법은 슬래시(/)로 감싼 형태로 정규 표현식을 작성하는 방법입니다.

const regex = /pattern/;

1.1.2. 생성자 함수

RegExp() 생성자 함수를 사용해 정규 표현식을 만들 수 있습니다.

const regex = new RegExp("pattern");


2. 정규 표현식의 플래그

정규 표현식에는 검색의 범위방식을 제어하는 플래그가 있습니다.

플래그 설명
g 전체 문자열에서 모든 일치 항목을 찾습니다.
i 대소문자를 구분하지 않고 검색합니다.
m 여러 줄에 걸쳐 검색을 수행합니다.
u 유니코드 모드에서 작동합니다.
s 줄바꿈 문자도 일치시킬 수 있습니다. (. 포함)

2.1. 예시: 플래그 사용

const regex = /hello/i;  // 대소문자를 구분하지 않고 "hello" 검색
const text = "Hello World!";
console.log(regex.test(text));  // 출력: true


3. 정규 표현식 패턴

정규 표현식에서 다양한 문자 클래스특수 기호를 사용하여 검색 패턴을 정의할 수 있습니다.

3.1. 기본 패턴

패턴 설명
. 임의의 한 문자 (줄바꿈 제외)
\\\\d 숫자(digit)와 일치
\\\\D 숫자가 아닌 문자와 일치
\\\\w 알파벳 문자, 숫자, 밑줄과 일치
\\\\W 알파벳 문자, 숫자, 밑줄이 아닌 문자와 일치
\\\\s 공백 문자와 일치
\\\\S 공백이 아닌 문자와 일치
^ 문자열의 시작을 나타냄
$ 문자열의 끝을 나타냄
* 0회 이상 반복
+ 1회 이상 반복
? 0회 또는 1회 등장
{n} 정확히 n번 반복
{n,} n회 이상 반복
{n,m} n회 이상 m회 이하 반복

3.2. 문자 그룹

문자 그룹을 사용해 여러 문자 중 하나를 매칭할 수 있습니다.

  • [abc]: a, b, c 중 하나와 일치
  • [a-z]: a부터 z까지의 소문자와 일치
  • [^abc]: a, b, c를 제외한 모든 문자와 일치

3.3. 예시: 패턴 사용

const regex = /\\\\d{3}-\\\\d{3}-\\\\d{4}/;  // "123-456-7890"과 같은 패턴
const phone = "My number is 123-456-7890.";
console.log(regex.test(phone));  // 출력: true


4. 정규 표현식 메서드

JavaScript에서는 정규 표현식과 관련된 여러 메서드를 제공합니다. 주로 test(), match(), replace(), search(), split() 메서드가 사용됩니다.

4.1. test(): 일치 여부 확인

test() 메서드는 문자열이 정규 표현식과 일치하는지 확인하고, 불리언 값을 반환합니다.

const regex = /world/;
const text = "Hello world!";
console.log(regex.test(text));  // 출력: true

4.2. match(): 일치하는 항목 반환

match() 메서드는 정규 표현식과 일치하는 모든 항목을 배열로 반환합니다. 플래그로 **g**를 사용하면 모든 일치 항목을 찾습니다.

const regex = /\\\\d+/g;
const text = "There are 100 apples and 200 oranges.";
const matches = text.match(regex);
console.log(matches);  // 출력: [ '100', '200' ]

4.3. replace(): 문자열 대체

replace() 메서드는 정규 표현식과 일치하는 문자열을 다른 문자열로 대체합니다.

const regex = /apple/gi;
const text = "Apple and apple";
const result = text.replace(regex, "orange");
console.log(result);  // 출력: "orange and orange"

4.4. search(): 일치하는 위치 찾기

search() 메서드는 정규 표현식과 일치하는 첫 번째 위치의 인덱스를 반환합니다.

const regex = /banana/;
const text = "I like banana and apple.";
const index = text.search(regex);
console.log(index);  // 출력: 7

4.5. split(): 패턴 기준으로 문자열 나누기

split() 메서드는 문자열을 정규 표현식을 기준으로 나누어 배열로 반환합니다.

const regex = /\\\\s+/;  // 공백을 기준으로 나누기
const text = "Split this sentence into words.";
const words = text.split(regex);
console.log(words);  // 출력: ['Split', 'this', 'sentence', 'into', 'words.']


5. 고급 정규 표현식 기능

5.1. 캡처 그룹

괄호 ()를 사용하여 캡처 그룹을 만들고, 일치하는 값을 그룹화할 수 있습니다.

const regex = /(\\\\d{3})-(\\\\d{3})-(\\\\d{4})/;
const phone = "123-456-7890";
const matches = phone.match(regex);

console.log(matches[1]);  // 출력: 123
console.log(matches[2]);  // 출력: 456
console.log(matches[3]);  // 출력: 7890

5.2. 선택 패턴 (|)

| 연산자를 사용하여 여러 패턴 중 하나와 일치할 수 있습니다.

const regex = /apple|banana/;
const text = "I like banana.";
console.log(regex.test(text));  // 출력: true

5.3. 역참조 (\\\\1, \\\\2 등)

역참조를 사용하여 캡처된 그룹을 다시 참조할 수 있습니다.

const regex = /(\\\\d{3})-(\\\\d{3})-\\\\1/;
const phone = "123-456-123";
console.log(regex.test(phone));  // 출력: true


6. 유효성 검사 예시

정규 표현식을 사용하여 이메일 주소전화번호 같은 입력 값을 유효성 검사를 할 수 있습니다.

6.1. 이메일 유효성 검사

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$/;
const email = "user@example.com";

console.log(emailRegex.test(email));  // 출력: true

6.2. 전화번호 유효성 검사

const phone

Regex = /^\\\\d{3}-\\\\d{3}-\\\\d{4}$/;
const phone = "123-456-7890";

console.log(phoneRegex.test(phone));  // 출력: true


요약

  • 정규 표현식은 문자열에서 특정 패턴을 검색하거나 일치하는 부분을 처리하는 강력한 도구입니다.
  • 플래그: g(전체 검색), i(대소문자 무시), m(여러 줄 검색) 등
  • 메서드: test()(일치 여부 확인), match()(일치 항목 반환), replace()(문자열 대체), search()(위치 검색), split()(문자열 분할)
  • 패턴: 숫자(\\\\d), 알파벳(\\\\w), 공백(\\\\s), 반복(``, +, ?) 등
  • 유효성 검사: 정규 표현식을 사용해 이메일이나 전화번호의 형식을 검증할 수 있습니다.

JavaScript에서 정규 표현식은 문자열 처리의 중요한 도구로, 데이터를 검증하거나 조작할 때 유용하게 사용할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com