
정규표현식은 문자열에서 특정한 문자를 찾아내는 도구
=> 특정한 규칙을 갖는 문자열로 이루어진 표현식
정규표현식 규칙을 슬래시(/)로 감싸 사용
슬래시 안에 들어온 문자열이 찾고자 하는 문자열
let pattern = /c/;
RegExp 객체의 생성자 함수를 호출하여 사용
let pattern = new RegExp('c');
exec 는 execution의 줄임말로, 원하는 정보를 뽑아내고자 할 때 사용
검색의 대상이 찾고자 하는 문자열에 대한 정보를 가지고 있다면 이를 배열로 반환하며, 찾는 문자열이 없다면 null을 반환
let pattern = /c/;
pattern.exec('coding') // ['c']
찾고자 하는 문자열이 대상 안에 있는지의 여부를 boolean 으로 리턴
let pattern = /c/;
pattern.test('coding') // true
RegExp.exec() 와 비슷한 기능을 하며, 정규 표현식을 인자로 받아 주어진 문자열과 일치된 결과를 배열로 반환합니다. 일치되는 결과가 없으면 null 을 리턴
let pattern = /c/;
let str = 'coding';
str.match(pattern); // ['c']
문자열에서 찾고자 하는 대상을 검색해서 이를 치환하려는 문자열로 변경 후 변경된 값을 리턴
let pattern = /c/;
let str = 'coding';
str.replace(pattern, 'C'); // 'Coding'
주어진 인자를 구분자로 삼아, 문자열을 부분 문자열로 나누어 그 결과를 배열로 반환
정규표현식을 인자로 받아 가장 처음 매칭되는 부분 문자열의 위치를 반환 / 매칭되는 문자열이 없으면 -1을 반환
"JavaScript".search(/script/); // -1 대소문자를 구분
"JavaScript".search(/Script/); // 4
"coding".search(/odi/); // 1
정규표현식은 플래그를 설정해 줄 수 있으며, 플래그는 추가적인 검색 옵션의 역할
플래그들은 각자 혹은 함께 사용하는 것이 모두 가능하며, 순서에 구분이 없다
i를 붙이면 대소문자를 구분하지 않는다.
let withi = /c/i;
let withouti = /c/;
"Coding".match(withi); // ['C']
"Coding".match(withouti); // null
global의 약자로, g를 붙이면 검색된 모든 결과를 리턴
let withg = /c/g;
let withoutg = /c/;
"coolcoding".match(withg); // ['c', 'c']
"coolcoding".match(withoutg); // ['c'] g 가 없으면 첫 번째 검색 결과만 반환
m을 붙이면 다중행을 검색
let str = `1st : cool
2nd : cod
3rd : ing`;
str.match(/c/gm)
// 3개의 행을 검색하여 모든 c 를 반환
// ['c', 'c']
str.match(/c/m)
// m은 다중행을 검색하게 해 주지만, g 를 빼고 검색하면 검색 대상을 찾는 순간 검색을 멈추기 때문에
// 첫 행의 ['c'] 만 리턴
| 정규식 패턴 | 설명 |
|---|---|
| ^ | 줄(Line)의 시작에서 일치 /^abc/ |
| $ | 줄(Line)의 끝에서 일치 /xyz$/ |
| . | (특수기호, 띄어쓰기를 포함한) 임의의 한 문자 |
| a(bar)b | a or b 와 일치, 인덱스가 작은 것을 우선 반환 |
| * | 0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일 |
| *? | 0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일 |
| + | 1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일 |
| +? | 1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일 |
| {3} | 숫자 3개 연속 일치 |
| {3,} | 3개 이상 연속 일치 |
| {3, 5} | 3개 이상 5개 이하 연속 일치 |
| () | 캡쳐(capture)할 그룹 |
| [a-z] | a부터 z 사이의 문자 구간에 일치(영어 소문자) |
| [A-Z] | A부터 Z 사이의 문자 구간에 일치(영어 대문자) |
| [0-9] | 0부터 9 사이의 문자 구간에 일치(숫자) |
| \(역슬래쉬) | escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식 |
| \d | 숫자를 검색함. /[0-9]/와 동일 |
| \D | 숫자가 아닌 문자를 검색함. /[^0-9]/와 동일 |
| \w | 영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일 |
| \W | 영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일 |
| [^] | []안의 문자열 앞에 ^이 쓰이면, []안에 없는 문자를 검색함 |
| Chracter | 뜻 |
|---|---|
| bar(or 연산자) | 또는 |
| ( ) | 그룹 |
| [ ] | 문자셋, 괄호안의 어떤 문자든 |
| [^] | 부정 문자셋, 괄호안의 어떤 문가 아닐때 |
| (?:) | 찾지만 기억하지는 않음 |
| Chracter | 뜻 |
|---|---|
| ? | 없거나 있거나 (zero or one) |
| * | 없거나 있거나 많거나 (zero or more) |
| + | 하나 또는 많이 (one or more) |
| {n} | n번 반복 |
| {min,} | 최소 |
| {min,max} | 최소, 그리고 최대 |
| Chracter | 뜻 |
|---|---|
| \b | 단어 경계 |
| \B | 단어 경계가 아님 |
| ^ | 문장의 시작 |
| $ | 문장의 끝 |
| Chracter | 뜻 |
|---|---|
| \ | 특수 문자가 아닌 문자 |
| . | 어떤 글자 (줄바꿈 문자 제외) |
| \d | digit 숫자 |
| \D | digit 숫자 아님 |
| \w | word 문자 |
| \W | word 문자 아님 |
| \s | space 공백 |
| \S | space 공백 아님 |
let regExp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
let regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;