티스토리 뷰
1. 정규표현식?!?
정규표현식이란?
문자열에 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴으로
자바스크립트에서는 정규표현식도 객체로 나타냅니다.
복잡해질 수 있는 조건문 혹은 반복문을 정규표현식을 이용해 간단히 표현할 수 있습니다.
but 가독성이 떨어져 정규표현식을 모른다면 뜻을 이해하기 힘듭니다.
정규표현식을 사용하는 메서드
정규표현식은 RegExp의 exec 메서드와 test 메서드
String의 match메서드 replace메서드 search메서드 split메서드에 사용하는 패턴입니다!
정규표현식 만드는 방법
let str = /^x/; //첫번째 방법
let str = new RegExp("xxx"); //두번째 방법
첫번째 방법으로는 / 로 감싸는 패턴이 있고
두번째 방법으로는 RegExp 객체의 생성자 함수를 호출하는 방법이 있습니다.
첫번째 방법 ( / / ) | 두번째 방법 (생성자 함수 호출) |
스크립트가 불러와질때 컴파일 | 실행 시점에 컴파일 |
스크립트를 바로 불러오는 경우 | 다른 출처에서 패턴을 가져오는 경우 |
정규식이 상수라면 성능이 향상 | 패턴이 변경될 수 있는 경우 |
2. 정규표현식에서 사용되는 문자들
1.특수 문자들
정규표현식 | 설명 | 간단히 표현 |
^x | 문자열의 시작을 표현하고 ^x는 문자열이 x로 시작함을 의미한다. | ![]() |
x$ | 문자열의 종료를 표현하고 x$는 문자열이 x로 끝난다를 의미한다. | ![]() |
.x | 임의의 한 문자의 자리수를 표현하며 문자열이 x로 끝난다를 의미한다. ex) ax, ox는 대응되지만 xo에는 대응되지 않는다. |
![]() |
x+ | x가 1번 이상 반복한다. | ![]() |
x? | x의 존재 여부를 확인한다. | ![]() |
x* | x의 반복 여부를 확인한다. | ![]() |
x|y | or을 표현한다. x혹은 y가 존재하는지를 의미한다. | ![]() |
(x) | 그룹을 표현하고 x를 그룹으로 처리한다. | ![]() |
(x)(y) | 그룹들의 집합을 표현한다. 앞에서부터 순서대로 번호를 부여하여 관리한다. 그룹화된 데이터들은 배열 형식으로 관리된다. |
![]() |
(x)(?:y) | 그룹들의 집합에서 예외를 표현한다. 그룹 집합으로 관리되지 않음을 뜻한다. |
![]() |
x{n} | x문자가 n번 반복한 문자를 찾는다. | ![]() |
x{n,} | x를 n번 이상 반복한 문자를 찾는다. | ![]() |
x{n,m} | x를 n번이상 m번 이하 반복한 문자를 찾는다. | ![]() |
2. 대괄호로 되어 있는 문자들
정규표현식 | 설명 | 간단한 표현 |
[xy] | xy중에 하나를 찾는다. | ![]() |
[^xy] | xy를 제외하고 문자 하나를 찾는다. | ![]() |
[x-z] | x~z 사이의 문자 중 하나를 찾는다. | ![]() |
3. \로 되어 있는 문자들
정규표현식 | 설명 | 간단한 표현 |
[\b] | 백스페이스와 대응된다. \b와 혼동 🚫 | ![]() |
\b | 단어 경계에 대응 문자와 공백사이의 문자를 찾는다. 사용시 앞의 문자 \b(str) 뒤의 문자 (str)\b |
![]() |
\B | 문자와 공백 사이가 아닌 값을 찾는다. | ![]() |
\d | 숫자 문자에 대응한다. [0-9]와 동일 | ![]() |
\D | 숫자 문자가 아닌 것에 대응 [^0-9]와 동일 | ![]() |
\n | 줄바꿈 문자에 대응한다. | ![]() |
\s | 스페이스,탭,줄바꿈 등의 하나의 공백 문자에 대응한다. | ![]() |
\S | 공백 문자가 아닌 하나의 문자에 대응한다. | ![]() |
\t | 탭 문자에 대응한다. | ![]() |
\v | 수직 탭 문자에 대응한다. | ![]() |
\w | 밑줄(_)를 포함한 영숫자 문자에 대응한다. | ![]() |
\W | 단어 문자가 아닌 문자에 대응한다. | ![]() |
\0 | 널 문자에 대응한다. 🚫뒤에 다른 숫자 쓰는거 금지! | ![]() |
\n | 정규식 내부의 n번째 괄호에서 대응한 부분의 역참조 | ![]() |
\b 예제
let str = 'he is angry';
let str2 = str.replace(/\bh/, 'sh');
console.log(str2); //result: she is angry
str2 =str.replace(/y\b/, 'abc');
console.log(str2); //result: he is angrabc
4. flag
Flag | 설명 |
g | Global-- 문자열 내의 모든 패턴을 찾는다 |
i | Ignore Case -- 문자열의 대소문자를 구별 X |
m | Multi Line -- 문자열에서 행이 바뀌어도 찾는다. |
flag는 정규표현식의 마지막 /의 뒤에 사용합니다.
3. 간단한 예제
const str = "나는 1이야 너는 2?";
console.log(str.split(/[0-9]/g));
//result
//[ '나는 ', '이야 너는 ', '?' ]
/0-9]/g를 사용하면 전체에서 0~9사이의 숫자를 찾습니다.
const str = "I am ironman";
console.log(str.split(/[i]/gi));
//result
//[ '', ' am ', 'ronman' ]
i를 대소문자 상관없이 찾는 것을 볼 수 있습니다.
나머지 예제는 사용하면서 하나하나씩 추가해나가겠습니다!
마지막으로
정규식을 간단하게 해석할 때 사용하기 좋은 사이트입니다!
Regexper
regexper.com
도움받은 블로그: www.nextree.co.kr/p4327/
반응형
'코딩언어 > javascript' 카테고리의 다른 글
[자바스크립트]match와 new RegExp() (0) | 2021.01.17 |
---|---|
SET 에 대해 알아보자 (MAP: 나는...?) (0) | 2020.12.19 |
문자열을 이리저리 바꿔보자 (0) | 2020.12.15 |
Array를 사용하는 여러가지 방법 (0) | 2020.12.13 |
if문과 삼항 조건 연산자 (0) | 2020.12.12 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- tolowercase
- Replace
- Split
- slice
- JavaScript
- 회원가입
- GROUP BY
- 숫자야구게임
- 프로그래머스
- 토마토3차원
- 정규표현식
- nodemailer error
- 코딩테스트
- SQL
- sort
- 로그인
- smtp error
- 코드테스트
- 카카오2018[1차]
- 백준 7562 node
- Level 1
- 백준 7569 node
- 534 error
- JOIN
- AWS
- 바이러스 dfs
- nodejs
- left join
- Express
- 백준
- Total
- Today
- Yesterday