본문 바로가기
JavaScript 문법 시리즈

[JavaScript 문법] 30일차: 정규 표현식

by cogito21_js 2024. 8. 30.
반응형

정규 표현식이란?

정규 표현식(Regular Expression)은 문자열에서 특정 패턴을 찾기 위해 사용되는 강력한 도구입니다. JavaScript에서 정규 표현식을 사용하여 문자열 검색, 일치 여부 확인, 치환 등의 작업을 효율적으로 수행할 수 있습니다.

정규 표현식의 기본 문법

정규 표현식은 슬래시(/)로 감싸서 정의하며, 다양한 패턴 매칭 기호를 사용할 수 있습니다.

예제

let regex = /hello/;
let str = 'hello world';
console.log(regex.test(str)); // true

주요 패턴 매칭 기호

  1. .: 임의의 한 문자와 일치
  2. *: 앞의 문자가 0번 이상 반복
  3. +: 앞의 문자가 1번 이상 반복
  4. ?: 앞의 문자가 0번 또는 1번 나타남
  5. ^: 문자열의 시작
  6. $: 문자열의 끝
  7. []: 문자 클래스, 대괄호 안의 문자 중 하나와 일치
  8. |: OR 연산자, 선택 패턴
  9. {n,m}: 앞의 문자가 최소 n번, 최대 m번 반복

예제

let regex1 = /h.llo/;
let regex2 = /hel*o/;
let regex3 = /^hello$/;
let regex4 = /[a-z]/;
let regex5 = /(hello|world)/;

console.log(regex1.test('hello')); // true
console.log(regex2.test('heeeeeeeello')); // true
console.log(regex3.test('hello')); // true
console.log(regex4.test('abc')); // true
console.log(regex5.test('hello world')); // true

정규 표현식 메서드

test 메서드

test 메서드는 문자열이 정규 표현식과 일치하는지 여부를 확인합니다. 일치하면 true, 그렇지 않으면 false를 반환합니다.

예제

let regex = /hello/;
let str1 = 'hello world';
let str2 = 'goodbye world';

console.log(regex.test(str1)); // true
console.log(regex.test(str2)); // false

match 메서드

match 메서드는 문자열에서 정규 표현식과 일치하는 부분을 배열로 반환합니다. 일치하는 부분이 없으면 null을 반환합니다.

예제

let regex = /hello/;
let str = 'hello world, hello again';

let matches = str.match(regex);
console.log(matches); // ['hello']

let regexGlobal = /hello/g;
let matchesGlobal = str.match(regexGlobal);
console.log(matchesGlobal); // ['hello', 'hello']

replace 메서드

replace 메서드는 문자열에서 정규 표현식과 일치하는 부분을 다른 문자열로 치환합니다.

예제

let regex = /hello/;
let str = 'hello world';

let newStr = str.replace(regex, 'hi');
console.log(newStr); // 'hi world'

정규 표현식의 활용 예제

이메일 검증

let emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
let email = 'example@example.com';

console.log(emailRegex.test(email)); // true

전화번호 검증

let phoneRegex = /^\d{3}-\d{3}-\d{4}$/;
let phone = '123-456-7890';

console.log(phoneRegex.test(phone)); // true

URL 검증

let urlRegex = /^(https?:\/\/)?(www\.)?[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}(\/[a-zA-Z0-9._-]*)*\/?$/;
let url = 'https://www.example.com/path';

console.log(urlRegex.test(url)); // true

정규 표현식의 장점과 단점

장점

  1. 강력한 패턴 매칭: 복잡한 문자열 패턴을 간단하게 표현하고 처리할 수 있습니다.
  2. 짧은 코드: 적은 코드로 복잡한 문자열 처리를 수행할 수 있습니다.
  3. 유연성: 다양한 문자열 형식을 검증하고 변환하는 데 유연하게 사용할 수 있습니다.

단점

  1. 가독성 저하: 복잡한 정규 표현식은 읽기 어렵고 이해하기 어려울 수 있습니다.
  2. 디버깅 어려움: 정규 표현식의 오류를 찾고 수정하는 것이 어렵습니다.
  3. 성능 문제: 잘못된 정규 표현식은 성능 문제를 일으킬 수 있습니다.

결론

정규 표현식은 문자열 패턴 매칭을 위한 강력한 도구입니다. 이번 글에서는 정규 표현식의 기본 개념과 주요 패턴 매칭 기호, test, match, replace 메서드, 정규 표현식의 활용 예제, 장점과 단점에 대해 배웠습니다. 다음 글에서는 심볼과 이터레이터에 대해 알아보겠습니다.

다음 글에서 만나요!

 

반응형