RegExp

Hanbin Lee·2021년 5월 8일
0
post-thumbnail

정규표현식이란?

Regular expression, 줄여서 RegExp라고 부른다.

<정규표현식 참고문헌>
MDN의 정규표현식 - 정규표현식-MDN
A guide to JS RegExp - RegEx Tutorial
RegExp testing tools - RegEx Testing

사용법

리터럴 패턴

let regExp = /hello/;
regExp.test('hello world!'); //true

생성자 함수 호출 패턴

let regExp = new RegExp('hello');
regExp.test('hello world!'); //true

정규식 내장 메소드

정규식 내장메소드-MDN

<RegExp 객체의 메소드>

exec()
exec는 execution(실행) 의 줄임말로, 검색 대상에 찾고자하는 문자열이 있다면 해당 문자열에 일치하는 문자열의 정보를 배열로 반환한다. 없다면 null을 반환한다.

let regExp1 = /hello/;
let regExp2 = /hi/;
regExp1.exec('hello world!');
// ["hello", index: 0, input: "hello world", groups: undefined]
regExp2.exec('hello world!');
// null

test()
test는 검색 대상에 찾고자하는 문자열의 유무를 boolean값으로 반환한다.

let regExp1 = /hello/;
let regExp2 = /hi/;
regExp1.test('hello world!');  //true
regExp1.test('hello world!');  //false

<String 객체의 메소드>

match()
exec()메소드와 비슷한 기능을 한다. 다만, 검색 대상과 찾고자하는 문자열의 입력위치가 반대이다.

let regExp1 = /hello/;
let regExp2 = /hi/;
let str = 'hello world!';
str.match(regExp1);
// ["hello", index: 0, input: "hello world!", groups: undefined]
str.match(regExp2);
// null

replace()
replace은 '검색 후 수정'을 수행한다. 첫번째 인자로 정규식을 받고, 두번째 치환할 문자를 받는다. 검색 대상에 수정 할 문자를 찾은 후 수정하고, 새로운 문자열을 반환한다.

let regExp = /h/;
let str = 'hello world!';
str.replace(regExp, 'H');
// "Hello world!"

search()
search는 검색 대상에 찾고자 문자열이 있다면 일치하는 문자열의 첫번째 인덱스 값을 반환한다. 일치하는 문자열이 없다면 -1을 반환한다.

let str = 'hello world!';
str.search(/hello/);  // 0
str.search(/world/);  // 6
str.search(/hi/);  // -1

flag

정규식은 뒤에 flag를 설정해 줄 수 있는데, 추가적인 검색 옵션의 역할을 한다. flag는 각자 혹은 함께 순서의 상관없이 사용이 가능하다. 주로 사용하는 3가지로 i, g 플레그가 있다.

i

대소문자를 구분하지 않는다.

let regExp1 = /h/;
let regExp2 = /h/i;
let str = 'Hello world!';
regExp1.test(str);  // false
regExp2.test(str);  // true

g

global의 약자로, 검색 대상의 일치하는 모든 것을 반환한다.

let regExp1 = /l/;
let regExp2 = /l/g;
let str = 'Hello world!';
str.match(regExp1);
// ["l", index: 2, input: "Hello world!", groups: undefined]
str.match(regExp2);
// ["l", "l", "l"]

정규식 패턴(표현식)

정규식 패턴설명
^줄(Line)의 시작에서 일치 /^abc/
$줄(Line)의 끝에서 일치 /xyz$/
.(특수기호, 띄어쓰기를 포함한) 임의의 한 문자
a|ba or b 와 일치, 인덱스가 작은 것을 우선 반환
*0회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {0,} 와 동일
*?0회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일
+1회 이상 연속으로 반복되는 문자와 가능한 많이 일치. {1,} 와 동일
+?1회 이상 연속으로 반복되는 문자와 가능한 적게 일치. {0} 와 동일
{3}숫자 3개 연속 일치
{3,}3개 이상 연속 일치
{3, 5}3개 이상 5개 이하 연속 일치
()캡쳐(capture)할 그룹
[a-z]a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]0부터 9 사이의 문자 구간에 일치(숫자)
\(역슬래쉬)escape 문자. 특수 기호 앞에 \를 붙이면 정규식 패턴이 아닌, 기호 자체로 인식
\d숫자를 검색함. /[0-9]/와 동일
\D숫자가 아닌 문자를 검색함. /[^0-9]/와 동일
\w영어대소문자, 숫자, (underscore)를 검색함. /[A-Za-z0-9]/ 와 동일
\W영어대소문자, 숫자, (underscore)가 아닌 문자를 검색함. /[^A-Za-z0-9]/ 와 동일
[^][]안의 문자열 앞에 ^이 쓰이면, []안에 없는 문자를 검색함
profile
안녕하세요 백엔드 개발자 이한빈 입니다 :)

0개의 댓글