[TIL][JS] 정규표현식

ddoni·2020년 12월 18일
0
post-custom-banner

정규표현식 (Regular Expression)

정규표현식은 문자열에서 특정 내용을 찾거나 발췌할 때 사용한다.

복잡한 코드를 대신하여 정규표현식을 사용하면 간단하지만 가독성은 좋지 않다.

정규표현식을 지원하는 메소드

/*
RegExp.prototype.exec 
RegExp.prototype.test
String.prototype.match
String.prototype.replace
String.prototype.search
String.prototype.split
*/

플래그

플래그는 옵션이므로 선택적으로 사용한다.

원하는 조건대로 사용하면 된다.

i (ignore case) : 대소문자 구분 없이 검색
g (global) : 문자열 전체 검색 (중복된 경우도 검색)
m (multiple line) : 문자열 행이 바껴도 검색

let targetStr = 'Is this all there is?';

let regexr = /is/; //'is'를 소문자인경우 1개만 찾음

targetStr.match(regexr);

regexr = /is/ig; //소대문자 신경안쓰고 여러개 찾음

targetStr.match(regexr); //3개 모두 찾음

패턴

검색하고 싶은 문자열을 따옴표 제외하고 입력한다.

// **. 은 임의의 문자를 의미한다.**

const regexr = /.../; //이는 임의의 문자 3개를 의미함.
**// + 는 앞의 패턴을 반복하고 싶으면 붙여준다.**
const targetStr = 'AA AAA BB Aa Bb';

const regexr = /A+/g;

targetStr.match(regexr);
//[ 'AA', 'AAA', 'A' ]
// | 는 or을 의미함
const targetStr = 'AA BB Aa Bb';

const regexr = /A|B/g;

targetStr.match(regexr);
//[ 'A', 'A', 'B', 'B', 'A', 'B' ]
// []안의 문자는 or로 동작한다.
const str = 'AA BB Aa Bb';

const regexr = /[AB]+/g; //A 니 B 반복되는 것 다 찾기

str.match(regexr); //[ 'AA', 'BB', 'A', 'B' ]
//범위지정 시 에는 [] 안에 -를 써준다.
const str = 'AA BB ZZ Aa Bb';

const regexr = /[A-Z]+/g;

str.match(regexr);
**// \d 는 숫자를 의미, \D 는 숫자가 아닌 문자열 의미**
const targetStr = 'AA BB Aa Bb 24,000';

// '0' ~ '9' 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
let regexr = /[\d,]+/g;

console.log(targetStr.match(regexr)); // [ '24,000' ]

// '0' ~ '9'가 아닌 문자(숫자가 아닌 문자) 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
regexr = /[\D,]+/g;

console.log(targetStr.match(regexr)); // [ 'AA BB Aa Bb ', ',' ]
**//\w는 알파벳과 숫자를 의미, \W는 알파벳과 숫자를 제외한 문자를 의미**
const targetStr = 'AA BB Aa Bb 24,000';

// 알파벳과 숫자 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
let regexr = /[\w,]+/g;

console.log(targetStr.match(regexr)); // [ 'AA', 'BB', 'Aa', 'Bb', '24,000' ]

// 알파벳과 숫자가 아닌 문자 또는 ','가 한번 이상 반복되는 문자열을 반복 검색
regexr = /[\W,]+/g;

console.log(targetStr.match(regexr)); // [ ' ', ' ', ' ', ' ', ',' ]

자주 사용하는 정규표현식

// ^ : 문자열의 처음을 의미
//http 로 시작하는지 검사

const url = "http://naver.com";

const regexr = /^http/;

regexr.test(url);
// $ : 문자열의 끝을 검사
//html로 끝나는지 검사

const str = 'index.html';

const regexr = /html$/;

regexr.test(str);
//문자열이 숫자로만 이루어졌는지 검사

const str = '12234434';

const regexr = /^\d+$/;

regexr.test(str);
//문자열의 첫 시작이 스페이스로 시작하는지 검사
//\s : 여러 가지 공백 문자 (스페이스, 탭 등) => [\t\r\n\v\f]

const str = ' hi!';

const regexr = /^\s+/;

regexr.test(str);
//유효한 아이디인지 검사
// {4,10} : 4 ~ 10자리

const id = 'abc123';

const regexr = /^[A-Za-z0-9]{4,10}$/;
post-custom-banner

0개의 댓글