정규표현식

정승옥(seungok)·2021년 2월 27일
0
post-thumbnail

1.정규표현식

  • 특정 규칙을 가진 문자열의 집합이다.
  • regexp 또는 regex 라고 부른다.
  • 특수문자 /, \ 를 사이에 두고 일치하는 문자열을 반환, 치환한다.
  • String 객체 메소드 또는 RegEx 객체의 내장 메소드를 활용한다.

🤜 1-1. 정규표현식 4가지 플래그(flag)

  • g : 전역 범위에서 해당하는 모든 문자를 찾는다.
  • i : 대소문자를 구분하지 않는다.
  • m : ^ , $ 와 함께 문자를 비교한다. 각 문자는 문자열의 처음을 의미하며 m 플래그가 있으면 각 행마다의 처음과 끝을 가리키며 없으면 문자열의 가장 처음과 마지막을 가리킨다.
  • y : lastIndex 로 지정한 위치부터 일치하는 문자를 찾는다.

🤜 1-2. 특정 세트의 문자 확인

  • \w : 모든 단어 문자와 일치 여부를 확인한다.
  • \W : 모든 단어 문자와 불일치 여부를 확인한다.
  • \d : 임의의 숫자 0 ~ 9와 일치 여부를 확인한다.
  • \D : 숫자가 아닌 모든 문자를 확인한다.
  • \s : 공백 문자와 일치 여부를 확인한다.
  • \S : 공백 문자가 아닌 문자를 확인한다.

2. 대응되는 문자열 위치(search)

const str = "I want to go home.";
const regex1 = /o/g;
const regex2 = /i/gi;
console.log(str.search(regex1)); // 8
console.log(str.search(regex2)); // 0
  • 정규표현식매개변수로 대입하여 일치하는 첫 번째 값의 인덱스 위치를 반환한다.

3. 문자열 확인(match)

const str = "I want to go home.";
const regepx1 = /([a-f])\w+/i;
const regepx2 = /([a-f])\w+/gi;
console.log(str.match(regepx1));
// [ 'ant', 'a', index: 3, input: 'I want to go home.',
// groups: undefined]
console.log(str.match(regepx2));
// [ 'ant' ]
  • 값이 일치할 경우 추가정보와 함께 배열로 반환한다.
  • g 플래그가 아닐때만 추가정보를 반환한다.
  • 추가정보
    👉 인자로 대입한 값과 일치하는 값
    👉 인덱스 위치
    👉 원본 문자열

4. 포함 여부 확인(test)

const phoneCheck = /\d{3}-\d{3,4}-\d{4}/;
console.log(phoneCheck.test("010-1234-1234")); // true
  • RegEx 객체의 메소드
  • 대입된 문자열이 정규표현식에 맞으면 true, 아니면 false를 반환한다.

5. 배열로 반환(exec)

const str = "I want to go home";
console.log(/home/gi.exec(str));
// [ 'home', index: 13, input: 'I want to go home', groups: undefined ]
  • 정규표현식과 일치하는 문자를 찾아 배열로 반환한다.
  • match 와 차이점은 현재 위치를 가리키는 lastIndex 를 계속 업데이트한다.

6. 문자열 치환(replace)

console.log("2021-02-27".replace("-", "/"));
// 2021/02-27
console.log("2021-02-27".replace(/-/g, "/"));
// 2021/02/27
  • 특정 문자열을 검색한 뒤 원하는 문자열로 반환한다.
  • 첫번째 인자로 교체 문자열 또는 정규식, 두번째 인자로 대체될 문자 또는 함수 를 받는다.
  • 일치하는 첫 번째 항목을 찾고 g 플래그를 사용하면 모든 문자열을 찾는다.
  • 두번째 인자로 함수를 정의할 때는 여러 매개변수를 사용한다.
    👉 일치하는 문자열
    👉 일치하는 값들
    👉 일치하는 값의 위치
    👉 원본 문자열
profile
Front-End Developer 😁

0개의 댓글