본문 바로가기

프로그래밍/[javascript] 자바스크립트

[JavaScript] 자바스크립트 정규식 문자 의미

by GenieIT* 2024. 11. 15.

728x90
반응형
728x90
반응형

 

1. 정규식이란?

JavaScript에서 정규식(Regular Expression, RegExp)은 문자열에서 특정 패턴을 검색, 매칭, 대체하는 데 사용됩니다. 정규식은 강력하면서도 복잡한 도구로, 문자열 처리에서 많은 유연성을 제공합니다.

 

2. 정규식 플래그

  • 정규식에는 다양한 플래그가 있어 동작 방식을 제어합니다.
플레그 설명
g 글로벌 검색: 모든 일치 항목 검색
i 대소문자 무시
m 여러 줄 검색 (^, $가 여러 줄에 적용됨)
s 점(.)을 줄바꿈 문자(\n)과도 매치
u 유니코드 모드 활성화
y "sticky" 모드: 검색 위치 고정
const str = "Hello hello HELLO";

// `g`: 모든 일치 항목
console.log(str.match(/hello/g)); // ["hello"]

// `i`: 대소문자 무시
console.log(str.match(/hello/i)); // ["Hello"]

// `g`와 `i` 함께 사용
console.log(str.match(/hello/gi)); // ["Hello", "hello", "HELLO"]

 

3. 정규식 패턴

  • 정규식의 패턴은 특정 문자열을 표현하거나 매칭 조건을 지정합니다.
문자 설명 예제
\d 숫자(0-9) /\d/.test("123") → true
\D 숫자가 아닌 문자 /\D/.test("abc") → true
\w 단어 문자 (알파벳 + 숫자 + _) /\w/.test("word") → true
\W 단어 문자가 아닌 문자 (특수문자) /\W/.test("@") → true
\s 공백 문자 (스페이스, 탭 등) /\s/.test(" ") → true
\S 공백이 아닌 문자 /\S/.test("a") → true
\b 단어 경계 /\bword\b/.test("word!") → true
\B 단어 경계가 아님 /\Bword\B/.test("worded") → true

 

4. 정규식 수량자

수량자 설명 예제
* 0회 이상 /a*/.test("aa") → true
+ 1회 이상 /a+/.test("aa") → true
? 0회 또는 1회 /a?/.test("b") → true
{n} 정확히 n회 /a{2}/.test("aa") → true
{n,} 최소 n회 /a{2,}/.test("aaa") → true
{n,m} 최소 n회, 최대 m회 /a{1,3}/.test("aa") → true

 

5. 정규식 문자 클래스

  • [abc]: a, b, 또는 c 중 하나.
  • [^abc]: a, b, c를 제외한 문자.
  • [a-z]: 소문자 알파벳 범위.
console.log(/[aeiou]/.test("hello")); // true (모음 존재)
console.log(/[^aeiou]/.test("hello")); // true (모음이 아닌 문자 존재)
console.log(/[0-9]/.test("123abc")); // true (숫자 존재)

 

6. 정규식 경계

  • ^: 문자열 시작.
  • $: 문자열 끝.
console.log(/^hello/.test("hello world")); // true (시작이 "hello")
console.log(/world$/.test("hello world")); // true (끝이 "world")

 

7. 정규식 메서드

7-1. test() 메서드

  • 문자열이 정규식과 일치하는지 검사하며, 결과는 true 또는 false입니다.
const regex = /hello/;
console.log(regex.test("hello world")); // true
console.log(regex.test("world")); // false

 

 

7-2. match() 메서드

  • 문자열에서 정규식과 일치하는 부분을 배열로 반환합니다.
const str = "hello hello";
console.log(str.match(/hello/)); // ["hello"]
console.log(str.match(/hello/g)); // ["hello", "hello"]

 

 

7-3. replace() 메서드

  • 정규식을 사용하여 문자열의 특정 부분을 교체합니다.
const str = "hello world";
console.log(str.replace(/hello/, "hi")); // "hi world"

 

 

7-4. split() 메서드

  • 정규식을 기준으로 문자열을 나눕니다.
const str = "one,two,three";
console.log(str.split(/,/)); // ["one", "two", "three"]

 

 

7-5. exec() 메서드

  • 정규식과 일치하는 문자열을 배열로 반환하며, 추가 정보를 제공합니다.
const regex = /(\d+)/;
const result = regex.exec("Order number: 12345");
console.log(result); 
// ["12345", "12345", groups: undefined, index: 14, input: "Order number: 12345"]

 

 

728x90
반응형