모던 자바스크립트 입문 12

BackEnd_Ash.log·2021년 4월 29일
0

모던 자바스크립트 입문 책을 참고해서 작성했습니다.

📌정규식의 기본

  • 정규 표현식 은 문자열의 패턴을 표현하기 위한 도구이다.
  • 자바스크립트의 정규 표현식은 RegExp 객체 로 표현한다.

즉 , 문자열의 패턴 을 표현하기 위한 도구이며 ,
문자열에서 원하는 특정 패턴을 찾을 때 사용한다.

👉 패턴 매칭

위와 같이 어떤 문자열이 정규 표현식이 표현하는 문자열의 패턴을 가지고 있을 때 그 문자열을 가리켜 정규 표현식과 일치 한다고 한다.

👉RegExp 객체의 메서드

RegExp.prototype 의 test , exec 메서드를 사용하거나 ,
String.prototype 의 match , replace , search , split 메서드를 사용해야합니다.

reg.test

const log = console.log;
var reg = /cat/;
log(reg.test("cats and dogs")); // true
log(reg.test("Cat")); // false

reg.exec

const log = console.log;
var reg = /Script/;
var result = reg.exec("JavaScript");
log(result[0]); // Script

📌기본적인 정규 표현식 패턴 작성하기

간단한 정규표현식을 작성하기엔 솔직히 다른 filter 메서드를 사용하면 된다.
하지만 정규식의 힘? 을 발휘할땐 메타 문자 를 사용한 문자열 패턴의 표현이다.

👉리터럴 문자

일반 문자를 리터럴 문자라고 한다.

👉문자 클래스

👉부정 문자 클래스 [^...]

[^...] 는 문자 클래스인 대괄호 안에 들어 있지 않은 단일 문자와 일치한다.

즉 , [^...][...] 의 여집합의 문자 한 개와 일치한다.

👉 문자 클래스의 단축 표기

임의의 문자 한개

숫자와 숫자 외의 문자

\d 는 숫자로 해석할 수 있는 문자 한 개와 일치한다.

\d 말고 \D 는 숫자 외의 문자와 일치한다.

👉 단어 문자와 단어 문자 외의 문자

  • \w 는 모든 영어 단어 문자
    [a-zA-Z0-9] 의 단축 표기
  • \s 는 모던 공백 문자와 일치

📌 반복 패턴

바로 앞의 요소를 최소 n번 반복

{n,} 는 바로 앞의 요소를 최소 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 만 걸어놓았다.

👉 선택패턴

👉 플래그

고급 검색을 설정하기 위한 플래그가 다섯 개 존재한다.

이들 플래그는 한 개만 설정할 수도 있고 , 여러 개를 조합해서 설정할 수도 있다.

플래그를 설정하는 방법

플래그 i

대소문자 구별 없이 매칭

플래그 g

일치하는 모든 문자열 검색

플래그 m

여러줄 모드

플래그 u

UTF-16으로 표시하는 16비트 문자열로 처리

플래그 y

시작 위치 고정 검색

📌 패턴 매칭을 하는 문자열 메서드

👉String-replace

  • 첫번째 인수로 받은 정규 표현식과 일치하는 문자열을 검색
  • 두번째 인수로 받은 문자열로 치환한 새로운 문자열을 반환
  • replace 메서드는 원본 문자열을 고치지 않습니다.

👉String-match

  • 첫 번째 인수로 받은 정규 표현식과 일치하는 문자열을 순서대로 저장해서 배열로 반환
  • 역시나 원본 문자열을 수정하지 않는다.

👉String-split

  • 첫 번째 인수로 문자열을 분할한 다음에 배열에 담아서 반환
  • 첫 번째 인수를 생략하면 원본 문자열 전체를 배열에 담아서 반환

profile
꾸준함이란 ... ?

0개의 댓글