replace함수로 string타입 데이터 가공

2022. 3. 17. 18:52BACK END/NODE.JS

 

RegExp와 String 메소드는 정규표현식에서 함께 사용되는 메소드이며 replace 함수는 String 메소드 중 하나

 

RegExp

 Method  Description
 exec 매칭된 문자열이 있다면 매칭된 값의 배열을 리턴하고, 매칭된 문자열이 없다면 null을 리턴
 test 매칭된 문자열이 있다면 ture를 리턴하고, 매칭된 문자열이 없다면 false를 리턴

String

Method Description 
match 매칭된 문자열이 있다면 매칭된 값의 배열을 리턴하고, 매칭된 문자열이 없다면 null을 리턴
search 매칭된 문자열이 있다면 매칭된 문자열의 인덱스를 리턴하고, 매칭된 문자열이 없다면 -1를 리턴
replace 매칭된 문자열을 찾아 매칭된 문자열을 변경하는 메소드
split 매칭된 문자열을 찾아 그 문자열을 기준으로 문자열을 나누는 메소드

 

 

replace()

String 메서드의 함수 중 문자열 데이터의 특정 문자를 변경하거나 제거하는데 사용할 수 있는 replace 함수로 데이터를 가공해보고자 함. 기본 형태는 아래와 같으며 첫번째 인자로 찾을 대상 문자열(a)을 입력하고 두번째 인자로 변경할 문자열(b)을 입력하면 변경된 결과를 확인할 수 있음.

replace(/대상 문자열/, "변경후 문자열")
let str = "a*b?c.d";

console.log(str.replace(/a/, "b") // "b*b?c.d"

 

 

 

 

특수문자 이스케이프

첫번째 인자로 들어가는 정규식 문자열은 특수문자를 포함할 수 있음. 이 때 몇몇 특수문자들은 아래에서 알아볼 바와 같이 특수한 용도로 사용되는 예약어이기 때문에, 백슬래시(\)를 문자 앞에 붙여줌으로써 이용해 문자 그대로 해석되어야 함을 명시.

let str = "aaaaa*a";

console.log(str.replace(/a*/, "b")); //"a*b"
console.log(str.replace(/a\*/, "b")); //"aaaaba"

백슬래시를 달아주지 않은 'a*'에서 *은 특수기호로 인식되어 연속된 a를 b로 치환하였으나 두번째 코드에서는 *앞에 백슬래시를 달아주어 일반 문자열로 인식시켜 'a*'을 b로 치환함.

 

 

단순문자 이스케이프

단순문자열에서 검색 범위를 확장하기 위해 쓸 수 있는 특수문자에는 '\b', '\n', '\d', '\f', '\r' 등 백슬래시(\)와 알파벳의 조합으로 이루어 진 것들이 있음. 단순문자 앞에 백슬래시를 써줌으로써 해당 문자가 단순문자가 아니라 특수문자로 해석해야함을 명시함.

let str = "ada12345";

console.log(str.replace(/ad/, "b")) // "ba12345"
console.log(str.replace(/a\d/, "b")) // "adb2345" 

첫번째 코드에서는 'd'를 단순문자로 인식하여 'ad'라는 문자열을 b로 치환하였고 두번째 코드에서는 'd'앞에 이스케이프 코드를 달아줌으로써 정수라는 새로운 의미를 갖게 됨. 그래서 'a(정수)' 형식인 'a1'이 b로 치환됨.

 

 

 

 

플래그

replace(/대상 문자열/플래그, "변경후 문자열")

JavaScript에서는 정규식을 생성할 때 고급 검색을 위한 옵션을 설정할 수 있도록 플래그를 지원. replace함수 기준으로 대상문자열을 나타내는 정규식의 역슬래시 다음 위치하는데 주로 쓰는 g와 i의 기능은 아래와 같음.

Flag Description
g 전역 검색
i 대소문자 구별 없이 검색

 

 

플래그 활용

let str = "Aaaaaa";


//1
console.log(str.replace(/a/, "b")); //"Abaaaa"

//2
console.log(str.replace(/a/g, "b")); //"Abbbbb"

//3
console.log(str.replace(/a/i, "b")); //"baaaaa"

//4
console.log(str.replace(/a/gi, "b")); //"bbbbbb"

1번 코드에서는 별도 플래그 없이 첫번째로 발견되는 소문자 a를 b로 바꾸어주었음

2번코드에서는 전역검색 기능인 'g'플래그가 추가되어 문자열 전체의 소문자a를  b로 바꾸어줌

3번코드에서는 'i'플래그로 대문자임에도 구분없이 첫번째 A를 b로 치환하였고

4번코드에서는 두 플래그 모두 사용하여 대소문자 구분 없이 문자열 전역의 A(a)를 b로 바꾸어주었음

 

 

참고

 

정규표현식 완전정복 - 재그지그의 개발 블로그

JavaScript를 활용하여 정규표현식의 기초부터 심화까지의 개념을 짚어봅니다.

wormwlrm.github.io

 

[자바스크립트] replace() 문자 변환, 치환

자바스크립트를 사용해 특정 문자를 다른 문자로 치환하는 방법에 대하여 알아볼까합니다. 먼저 사용할 메소드는 replace() 입니다.

webisfree.com

 

[자바스크립트] 정규식(Regular Expressions)

정규식(Regular Expressions) 정규식은 문자열에 포함된 문자 조합을 찾기 위해 사용되는 패턴입니다. 코드를 간략하게 만들 수 있으나, 가독성이 떨어질 수 있습니다. RegExp의 exec, test 메소드와 String

beomy.tistory.com

 

RegExp - JavaScript | MDN

RegExp 생성자는 패턴을 사용해 텍스트를 판별할 때 사용합니다.

developer.mozilla.org

 

 

 

 

'BACK END > NODE.JS' 카테고리의 다른 글

MariaDB Cannot enqueue Query after fatal error.(진행 중)  (0) 2022.03.17
node-cron을 활용한 스케쥴링  (0) 2022.03.17
cross-env  (0) 2022.03.17
Bcrypt 암호화  (0) 2022.03.17
REST 미지원 메서드 처리  (0) 2022.03.17