자바스크립트 정규식

백우진·2023년 11월 3일
0
post-thumbnail

정규식

정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 패턴입니다. 이는 문자열에서 특정한 텍스트를 찾거나, 대체하거나, 추출하는 등의 작업을 가능하게 합니다.

활용

  1. 정규식 생성
    자바스크립트에서 정규식은 RegExp 객체를 이용하여 생성됩니다.

// 직접 정규식 표현식 사용
let regex = /pattern/;

// RegExp 객체 생성자 사용
let regex = new RegExp('pattern');


  1. 정규식 패턴
    정규식의 패턴은 다양한 메타문자와 특수 문자로 구성됩니다. 몇 가지 예시를 살펴보면
① 메타 문자
^ : 문자열의 시작을 나타내며, ^abc는 문자열이 "abc"로 시작하는 경우와 매치됩니다.
$ : 문자열의 끝을 나타내며, xyz$는 문자열이 "xyz"로 끝나는 경우와 매치됩니다.
. : 줄 바꿈 문자를 제외한 모든 문자와 매치됩니다.
 : 앞의 문자가 0회 이상 반복되는 경우와 매치됩니다.
+ : 앞의 문자가 1회 이상 반복되는 경우와 매치됩니다.
? : 앞의 문자가 0회 또는 1회 나타나는 경우와 매치됩니다.
| : "또는"의 의미로 사용되며, A|B는 A 또는 B와 매치됩니다.


② 문자 클래스
[ ] : 대괄호 사이의 어떤 문자든 하나와 매치됩니다.
[abc] : "a", "b", "c" 중 하나와 매치됩니다.
[a-z] : 알파벳 소문자 중 하나와 매치됩니다.
[^0-9] : 숫자가 아닌 문자와 매치됩니다.


③ 특수 문자
\d : 숫자와 매치됩니다. **[0-9]**와 동일한 의미입니다.
\D : 숫자가 아닌 문자와 매치됩니다.
\s : 공백 문자와 매치됩니다.
\S : 공백이 아닌 문자와 매치됩니다.
\w : 알파벳 대소문자, 숫자, 밑줄 문자와 매치됩니다.
\W : 알파벳 대소문자, 숫자, 밑줄 문자가 아닌 것과 매치됩니다.


④ 수량자
{ } : 특정 횟수나 범위를 지정합니다. **a{2}**는 "a"가 2회 반복되는 경우와 매치됩니다.
{m,n} : m회에서 n회 사이의 반복 횟수와 매치됩니다. **a{2,4}**는 "a"가 2회에서 4회까지 반복되는 경우와 매치됩니다.


⑤ 그룹화 및 역참조
( ) : 그룹을 나타내며, 하나의 문자처럼 취급됩니다.
\1, \2 : 정규식 내에서 이전에 매칭된 그룹을 재사용할 수 있습니다.

  1. 예시
  • 이메일 주소 유효성 검사
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

const email = 'example@email.com';
if (emailPattern.test(email)) {
  console.log('유효한 이메일 주소입니다.');
} else {
  console.log('유효하지 않은 이메일 주소입니다.');
}

  • 전화번호 형식 매칭
const phonePattern = /^\d{3}-\d{3,4}-\d{4}$/;

const phoneNumber = '010-1234-5678';
if (phonePattern.test(phoneNumber)) {
  console.log('올바른 전화번호 형식입니다.');
} else {
  console.log('잘못된 전화번호 형식입니다.');
}

  • URL 주소 추출
const text = 'Visit our website at http://www.example.com';
const urlPattern = /https?:\/\/\S+/;

const extractedURL = text.match(urlPattern);
console.log('추출된 URL:', extractedURL[0]);

  • 공백 제거
const sentence = '  이것은      정규식을 활용한       문자열 처리입니다.   ';
const trimmedSentence = sentence.replace(/\s+/g, ' ').trim();
console.log(trimmedSentence);

  • 단어 치환
const sentence = '사과는 맛있다. 배도 맛있다.';
const replacedSentence = sentence.replace(/맛있다/g, '매우 맛있다');
console.log(replacedSentence);

profile
안녕하세요.

0개의 댓글