정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용되는 패턴입니다. 이는 문자열에서 특정한 텍스트를 찾거나, 대체하거나, 추출하는 등의 작업을 가능하게 합니다.
// 직접 정규식 표현식 사용
let regex = /pattern/;
// RegExp 객체 생성자 사용
let regex = new RegExp('pattern');
① 메타 문자
^ : 문자열의 시작을 나타내며, ^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 : 정규식 내에서 이전에 매칭된 그룹을 재사용할 수 있습니다.
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('잘못된 전화번호 형식입니다.');
}
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);