모던 자바스크립트 입문 책을 참고해서 작성했습니다.
정규 표현식
은 문자열의 패턴을 표현하기 위한 도구이다.RegExp 객체
로 표현한다.즉 , 문자열의 패턴
을 표현하기 위한 도구이며 ,
문자열에서 원하는 특정 패턴을 찾을 때 사용한다.
위와 같이 어떤 문자열이 정규 표현식이 표현하는 문자열의 패턴을 가지고 있을 때 그 문자열을 가리켜 정규 표현식과 일치 한다고 한다.
RegExp.prototype 의 test , exec 메서드를 사용하거나 ,
String.prototype 의 match , replace , search , split 메서드를 사용해야합니다.
const log = console.log;
var reg = /cat/;
log(reg.test("cats and dogs")); // true
log(reg.test("Cat")); // false
const log = console.log;
var reg = /Script/;
var result = reg.exec("JavaScript");
log(result[0]); // Script
간단한 정규표현식을 작성하기엔 솔직히 다른 filter
메서드를 사용하면 된다.
하지만 정규식의 힘? 을 발휘할땐 메타 문자 를 사용한 문자열 패턴의 표현이다.
일반 문자를 리터럴 문자라고 한다.
[^...] 는 문자 클래스인 대괄호 안에 들어 있지 않은 단일 문자와 일치한다.
즉 , [^...] 는 [...] 의 여집합의 문자 한 개와 일치한다.
\d 는 숫자로 해석할 수 있는 문자 한 개와 일치한다.
\d 말고 \D 는 숫자 외의 문자와 일치한다.
{n,} 는 바로 앞의 요소를 최소 n번 이상 반복합니다.
{n} 는 바로 앞의 요소를 n번 반복합니다.
이는 {n,n} 와 같다.
📌👉
const log = console.log;
const jsFirst = /^JavaScript/;
log(jsFirst.test("JavaScript is powerful")); // true
log(jsFirst.test("I love JavaScript")); // false
^ 은 부정의 뜻이다.
const log = console.log;
const jsLast = /JavaScript$/;
log(jsLast.test("JavaScript is powerful")); // false
log(jsLast.test("I love JavaScript")); // true
이외에도 .. 여러 패턴들이 있었다..
하지만 개인적으로 많이 사용하지 않는 패턴들 같아서 , 궁금할때 찾아보기 위해 그냥 index 만 걸어놓았다.
고급 검색을 설정하기 위한 플래그가 다섯 개 존재한다.
이들 플래그는 한 개만 설정할 수도 있고 , 여러 개를 조합해서 설정할 수도 있다.
대소문자 구별 없이 매칭
일치하는 모든 문자열 검색
여러줄 모드
UTF-16으로 표시하는 16비트 문자열로 처리
시작 위치 고정 검색