JS_정규표현식 기초 문법 정리
정규표현식 연습 사이트!
JS
RegExp
RegExp 객체를 이용해 정규 표현식을 사용할 수 있다.
// 생성자 함함수 방방식식
// new RegExp(표현식)
const regExp1 = new RegExp("^\d+");
// new RegExp(표현식, 플래그)
const regExp2 = new RegExp("^\d+", "gi");
/*
Literal 방식
문법
/regexp/i
시작기호(/), 패턴, 종료기호(/), 플래그(i)
*/
// 표현식
const regexp1 = /^\d+/;
// 표현식 플래그
const regexp2 = /^\d+/gi;
test
입력받은 문자열에서 찾는 패턴을 입력하여
문자열에서 패턴과 일치하는 부분이 있다면 True || False
const mes1 = "gdg 010-5555-1111 BAAAM";
const mes2 = 'ppapapapapapappaap';
// 정규표현식 리터럴
const regExp = /\d{3}-\d{3,4}-\d{4}/;
console.log(regExp.test(mes1));
console.log(regExp.test(mes2));
exec
입력받은 문자열에서 찾는 패턴이 있다면
일치하는 패턴 정보를 반환하고
없다면 null 반환
match
string 객체의 match 함수
exec와 비슷하게 입력받은 문자열에서 찾는 패턴이 있다면
일치하는 패턴 정보를 반환하지만 일치하는 패턴이 2개 이상일 경우 가장 먼저 찾은 1개만 반환함
없다면 null 반환
따라서 모두 일치하는 것을 찾기 위해선 matchAll() 함수를 사용해야함
replace
string 객체의 replace 함수
정규표현식 객체 (위 test 에서의 regExp)를 파라미터로 하여
일치하는 패턴이 있는지 찾은 후 원하는 문자열로 변경이 가능하다.
regExp.replace(etc, '이걸로 바꿔줘');
search
string 객체의 search 함수
문자 검색에 해당한다.
정규표현식 객체 (위 test 에서의 regExp)를 파라미터로 하여
일치하는 패턴이 있는지 찾은 후 패턴 정보의 위치(인덱스)를 반환함
2개 이상을 찾아도 처음 찾은 1개의 인덱스를 반환함
따라서 모두 일치하는 것을 찾기 위해선 matchAll() + 플래그로 g를 붙혀주면 된다!.
mes1.matchAll(패턴(ex : /regexp/i/g));
capture
캡쳐가 적용된! 정규표현식을 이용하면
() 괄호 ==> 캡쳐
match 반환값의 1번 인덱스부터 순차적으로 캡쳐가 들어감
const mes1 = "gdg 010-5555-1111 BAAAM";
const mes2 = 'ppapapapapapappaap';
// 정규표현식 리터럴
// () 괄호 -- capture
const regExp = /(\d{3})-(\d{3,4})-(\d{4})/;
console.log(mes1.match(regExp));
console.log(mes2.match(regExp));
Run-length-encoding
매우 간단한 비손실 압축 알고리즘
연속적인 문자열을 숫자와 문자열로 압축하는 알고리즘
개미 수열을 정규표현식으로 푸는 방법
입력 5 ==> 111221 나와야함