일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- NextJs
- MongoDB
- clonecoding
- ES6
- GRID
- TypeScript
- API
- 리액트
- ECMAScript
- Session
- heroku
- 자바스크립트
- frontend
- pug
- react
- Mongoose
- javscript
- form
- CSS
- CLONE
- Flutter
- express
- Component
- backend
- nodejs
- HTML
- graphQL
- JavaScript
- node.js
- DART
- Today
- Total
Enjoy Programming
Regular Expression - 정규표현식 본문
정규표현식이란 문자열을 검색하고 대체하는 데 사용 가능한 일종의 형식 언어(패턴)이다.
간단한 문자 검색부터 이메일, 패스워드 검사 등의 복잡한 문자 일치 기능 등을 정규식 패턴으로 빠르게 수행할 수 있다.
단 정규식 패턴이 수행 내용과 매치가 잘 안되어 가독성이 많이 떨어지기에 공부하는데 어렵다.
기초 개념을 잘 다져보자.
정규표현식은 크게 세가지 역할을 수행한다
문자 검색, 문자 대체, 문자 추출
자바스크립트 정규식 생성
정규표현식은 객체로 취급되기 때문에 생성자 함수 또는 리터럴로 정의한다.
1.생성자 함수 방식
RegExp - 생성자 함수를 호출하여 사용할 수 있다.
const reg = new RegExp("^abc", "gi");
new RegExp(표현식, 플래그)
2.리터럴 방식
" / " 로 감싸진 페턴을 리터럴로 사용한다.
const reg = /^abc/gi;
보통은 리터럴이 훨씬 편리하다. 하지만 상황에따라 생성자 함수를 써야만 하는 경우도 있다.
3.재할당(re-compile)
const가 아닌 let으로 변수 선언을 하면 사용중인 정규식을 재할당 할 수 있다.
** 단순 패턴 사용하기
단순패턴은 문자열을 있는 그대로 대응시킬ㄷ 때 사용된다. /abc/라는 패턴은 문자열에서 정확히 'abc'라는 문자들이
모두 함께 순서대로 나타나야 대응이 된다.
예를 들어 "hello, do you know your abc's?" 에 대응되고 또 slabcraft안의 abc에 대응된다.
그러나 grab crab같은 문장에도 ab c가 있지만 정확하게 abc가 아닌 공간이 있으므로 대응되지 않는다.
자 위에 예에서 플래그라는 단어가 등장하였다 .
정규식은 여섯개의 플래그를 설정할 수 있으며, 이를 통해 전역 검색 또는 대소문자 구분 없는 검색을 수행 할 수 있다.
이플래그들은 각기 사용되기도 하고 함께 사용될 수 있으며 순서에 구분이 없다.
또한 이렇게 설정된 플래그는 나중에 추가되거나 삭제 될 수 없다.
간단히 다시 짚어보면
g : 검색 패턴을 비교할 때 일치하는 모든 부분을 선택하도록 설정
i : 검색 패턴을 비교할 때 대소문자를 구분하지 않도록 설정
m: 검색 패턴을 비교할때 여러 줄의 입력 문자열을 그 상태 그대로 여러 줄로 비교하도록 설정
y: 대상 문자열의 현재 위치부터 비교를 시작하도록 설정함.
** 특수 문자 사용하기
검색어에서 하나 이상의 b찾거나, 혹은 공백을 찾는 것과 같이 있는 그대로의 대응 이상의 대응이 필요한 경우
패턴에 특수한 문자를 포함시킨다. 예를 들어 /ab*c/는 'a'문자 뒤에 0개 이상의 'b'가 나타나고 바로 뒤에 'c'가 나오는
문자 조합에 대응된다. *문자는 바로 앞의 문자가 0개 이상이라는 것을 의미한다.
cbbaabbbbbbccca - 여기서는 안에 abbbbbbc와 대응이 된다
정규식에서 사용되는 특수문자는 정말 많다.... 하나씩 거론하는 것은 힘드니
일단 mozilla 사이트 링크를 걸어 두고 쓰자.
developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions
** 정규식에 사용되는 method
정규식은 RegExp, test, exec, String, match, replace, search, split메소드와 함께 쓰인다.
** 괄호로 둘러싼 패턴
정규식에서 괄호를 사용하면, 그 부분을 별도로 대응시키면서 대응된 부분을 기억한다.
/a(b)c/는 abc와 대응되면서 'b'를 기억한다. 괄호로 감싸진 문자열을 불러 오려면 배열의 인덱스를 사용하면 된다.
괄호로 감쌀 수 있는 문자의 개수에는 제한이 없다. 반환된 배열은 찾아낸 모든 것을 가지고 있다.
파이썬 배울때 정규표현식을 잠깐 접했었는데.. 이건 그냥 외우기와 익숙해지는걸로 가야겠다..;;;
암튼 개발자로 성장하려면 이것도 잘써야 할 듯 하다.
정규표현식을 테스트해보고 또한 다른 사람이 만들어놓은 정규표현식도 함께 볼 수 있는 사이트를 하나 링크 걸어 둔다.
'JavaScript > Vanilla Js' 카테고리의 다른 글
ES6 - Default Values (0) | 2021.05.11 |
---|---|
ES6 - Arrow function (array function) (0) | 2021.05.10 |
심심풀이 로또번호 생성기 (0) | 2021.05.08 |
Library && FrameWork (0) | 2021.05.08 |
Parameter && Argument (0) | 2021.05.08 |