// 대표적 예시 전화번호 숫자패턴 검사
const regex = /\d{3}-\d{4}-\d{4}/;
// (\d는 숫자를 의미하고, {} 안의 숫자는 갯수를 의미한다.)
regex.test('010-1111-2222') // true;
regex.test('01-11-22') // false;
// 리터럴 방식
const regex = /abc/;
// 생성자 방식
const regex = new RegExp("abc");
변수 = /패턴/플래그 형태로 이루어짐const regex1 = /abc/flags;
const regex2 = new RegExp(/abc/, flags);
| Flag | 의미 | 설명 |
|---|---|---|
| i | Ignore Case | 대소문자 구별 안하고 검색 |
| g | Global | 문자열 내 모든 패턴 검사 |
| m | Multi Line | 문자열의 행이 바뀌더라도 검색을 계속한다. |
| s | 개행문자 \n을 포함함 | |
| u | unicode | 유니코드 전체를 지원 |
| y | sticky | 특정 위치에서 검색을 진행하는 ‘sticky’ 모드 |
플래그 활용 예시
// `a`가 두 개 포함된 문자열을 만들었습니다
const str = "abcabc";
// `g` 플래그 없이는 최초에 발견된 문자만 반환됩니다
str.match(/a/);
// ["a", index: 0, input: "abcabc", groups: undefined]
// `g` 플래그와 함께라면 모든 결과가 배열로 반환됩니다
str.match(/a/g);
// (2) ["a", "a"]
const str = "abcABC";
console.log(str.match(/a/gi));
// (2) ["a", "A"]
console.log(str.match(/a/i));
//g를 빼면 먼저 찾는 거 반환
//[ 'a', index: 0, input: 'abcABC', groups: undefined ]
| 메서드 | 의미 |
|---|---|
| ("문자열").match(/정규표현식/플래그) | "문자열"에서 "정규표현식"에 매칭되는 항목들을 배열로 반환 |
| ("문자열").replace(/정규표현식/, "대체문자열") | "정규표현식"에 매칭되는 항목을 "대체문자열"로 변환 |
| ("문자열").split(정규표현식) | "문자열"을 "정규표현식"에 매칭되는 항목으로 쪼개어 배열로 반환 |
| (정규표현식).test("문자열") | "문자열"이 "정규표현식"과 매칭되면 true, 아니면 false반환 |
| (정규표현식).exec("문자열") | match메서드와 유사(단, 무조건 첫번째 매칭 결과만 반환) |
메서드 활용 예시
const str = "abcABC";
console.log(str.match(/a/gi));
// (2) ["a", "A"]
console.log(str.replace(/a/g, '1'))
// 1bcABC
console.log(str.replace(/a/gi, '1'))
// 1bc1BC
console.log(str.split(/a/g))
// [ '', 'bcABC' ]
console.log(str.split(/a/gi))
// [ '', 'bc', 'BC' ]
console.log(/a/.test(str))
// ture
console.log(/d/.test(str))
// false
console.log(/a/.exec(str))
// [ 'a', index: 0, input: 'abcABC', groups: undefined ]
console.log(/a/gi.exec(str))
// [ 'a', index: 0, input: 'abcABC', groups: undefined ]
| 기호 | 사용 예시 |
|---|---|
| [] | [가나다] = ‘가’ ’나’ ’다’ 각각을 모두 찾는다. |
| // | /가나다/ = ‘가나다’를 찾는다. |
| [^문자] | [ ] 안의 문자를 제외한 것 |
| ^문자 | ^ 뒤의 문자로 시작하는 것 |
| 문자$ | $ 앞의 문자로 끝나는 것 |
검색패턴 활용 예시
const str = "가나다라마바사 사바마라다나가";
console.log(str.match(/가|나/g))
// [ '가', '나', '나', '가' ]
console.log(str.match(/[가나다]/g))
// [ '가', '나', '다', '다', '나', '가' ]
console.log(str.match(/가나다/g))
// [ '가나다' ]
console.log(str.match(/[^가나다]/g))
// ['라', '마', '바','사', ' ', '사','바', '마', '라']
console.log(str.match(/^가나/g))
// [ '가나' ]
console.log(str.match(/^가라/g))
// null
console.log(str.match(/나가$/g))
// [ '나가' ]
console.log(str.match(/바사$/g))
// null