컴퓨터가 글자나 숫자 같은 것들을 찾아내는 행위를 의미합니다.
// 생성자
new RegExp('표현', '옵션')
new RegExp('[a-z]', 'gi')
// 리터럴
/표현/옵션
/[a-z]/gi
const str = `
010-1234-5678
thesecon@gmail.com
https://www.omdbapi.com/?apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`
| 메소드 | 문법 | 설명 |
|---|---|---|
| test | 정규식.test(문자열) | 일치 여부(Boolean) 반환 |
| match | 문자열.match(정규식) | 일치하는 문자의 배열(Array) 반환 |
| replace | 문자열.replace(정규식, 대체문자) | 일치하는 문자를 대체 |
//test
console.log('전화번호가 있나요?:', /\d{3}-\d{4}-\d{4}/.test(str));
// true
//match
console.log('URL 찾기:', str.match(/https?\/\/[^\s]+/g));
// ["https://www.omdbapi.com/?apikey=7035c60c&s=frozen"]
//replace
console.log('중복 글자 줄이기:', str.replace(/(.)\1+/g, '$1'));
// "010-1234-5678\nthesecon@gmail.com\nhttps://www.omdbapi.com/?apikey=7035c60c&s=frozen\nThe quick brown fox jumps over the lazy dog.\nabcd\n"
정규표현식에서 자주 사용되는 플래그 g, i, m 은 검색 동작을 제어하는 데 사용됩니다.
| 플래그 | 설명 |
|---|---|
| g | 모든 문자 일치(global) |
| i | 영어 대소문자를 구분 않고 일치(ignore case) |
| m | 여러 줄 일치(multi line) |
const str = "123 ABC 456 DEF 789";
console.log(str.match(/\d+/)); // ["123"]
console.log(str.match(/\d+/g)); // ["123", "456", "789"]
const str = "Apple apple aPPle aPpLE";
console.log(str.match(/apple/)); // ["apple"]
console.log(str.match(/apple/i)); // ["Apple"]
console.log(str.match(/apple/gi)); // ["Apple", "apple", "aPPle", "aPpLE"]
const str = `Hello world
Goodbye world
Hello again`;
// '^Hello'는 첫 번째 줄의 시작에서만 일치
console.log(str.match(/^Hello/)); // ["Hello"]
// 'm' 플래그로 각 줄의 시작에서 "Hello"를 찾음
console.log(str.match(/^Hello/m)); // ["Hello", "Hello"]
정규표현식의 패턴은 특정한 문자열이나 문자 조합을 찾기 위해 사용되는 규칙입니다.
이 패턴들은 특정 문자, 문자 집합, 숫자, 특수 문자, 그리고 문자 위치 등을 표현하는 기호와 규칙들을 사용해 구성됩니다.
이를 통해 텍스트에서 원하는 정보를 효율적으로 검색하거나 변환할 수 있습니다.
// 문자 패턴
/cat/ // "cat"이라는 단어를 찾음
// 문자 집합
/[abc]/ // 'a', 'b', 'c' 중 하나를 찾음
// 부정 문자 집합
/[^abc]/ // 'a', 'b', 'c'를 제외한 모든 문자
| 패턴 | 설명 |
|---|---|
| ^hello | 줄(Line) 시작에 문자열을 의미 (hello 로 시작하는 문자열과 매치) |
| ab$ | 줄(Line) 끝에 있는 문자열을 의미 |
| . | 임의의 한 문자와 일치 |
| a|b | a 또는 b와 일치 |
| ab? | b가 없거나 b와 일치 |
| {3} | 3개 연속 일치 (반복문자) |
| {3,} | 3개 이상 연속 일치 (반복문자) |
| {3,5} | 3개 이상 5개 이하(3~5개) 연속 일치 (반복문자) |
| [abc] | a 또는 b 또는 c |
| [a-z] | a부터 z 사이의 문자 구간에 일치(영어 소문자) |
| [A-Z] | A부터 Z 사이의 문자 구간에 일치(영어 대문자) |
| [0-9] | 0부터 9 사이의 문자 구간에 일치(숫자) |
| [가-힣] | 가부터 힣 사이의 문자 구간에 일치(한글) |
| (?=...) | 앞쪽 일치(Lookahead) |
| (?<=...) | 뒤쪽 일치(Lookbehind) |
\w, \b, \d, \s 의 경우에는 소문자와 대문자의 역할이 다르니 사용할 때 주의해야합니다.
| 패턴 | 설명 |
|---|---|
| \w | 63개 문자(Word, 대소영문52개 + 숫자10개 + _ 에 일치 |
| \W | 단어 문자가 아닌 문자, '!', '#', ' ' 등과 매치 |
| \b | 단어의 경계, /\bcat\b/ // 단어로서의 'cat'과 매치 (예: 'cat', 'a cat', 'cat!') |
| \B | 단어의 경계가 아닌 곳, /\Bcat/ 'catalog' 같은 곳의 'cat'과 매치 |
| \d | 숫자(Digit)에 일치 |
| \D | 숫자가 아닌 문자, 'a', '-', ' ' 등과 매치 |
| \s | 공백(Space, Tab 등) 문자 |
| \S | 공백이 아닌 문자, 'a', '1', '#' 등과 매치 |
// 반복문자 줄이기
console.log('반복 줄이기:', "aaaabbbcccdde".replace(/(.)\1+/g, '$1'));
// "abcde"