프론트엔드/JAVASCRIPT

[javascript] replace(), replaceAll(), 정규표현식 new RegExp() 정리

진기명기 2023. 3. 6. 22:49
🫠 프로그래머스 문제를 풀면서 뒤통수를 맞은 듯한 느낌이 들어 블로그로 정리할까 한다.
replace()에 대해서는 저번에 문자열 정리 포스팅을 작성하면서 다뤘었는데, 어찌 replaceAll() 함수가 있다는 것을 모르고 있었을까..! 팀원들과 프로그래머스 문제 풀이 study를 하던 중, 내가 힘들게 풀었던 문제를 replaceAll()을 사용해서 간단하게 푼 것을 듣고, 아 내가 정말 우물 안 개구리구나..! 하고 반성하게 되었다.. 반성하면서 작성하는 replaceAll() 정리!

 

💡 replace()에 대해서는 아래 포스팅 참고 ⬇️⬇️⬇️

https://cyjcyj.tistory.com/38

 

[javascript] String(문자열) 내에 접근하는 다양한 함수 정리

* String(문자열) 내에 접근하는 다양한 방법 🫠 javascript에서 String에 접근하는 방법으로 위치 기반 접근, 길이 기반 접근, 스펠링, 개수... 등 다양한 방법들이 존재한다. 이 중 내가 상황에 맞게 어

cyjcyj.tistory.com

 

 

 


 객체를 하나 생성해서 replace() 실행해보자
/* replace() */

let str1 = "Hello, My name is YJ"

let str2 = str1.replace("YJ", "SH")
console.log(str2) // Hello, My name is SH
👉🏻 output : 주석 처리 확인
✅  replace()를 사용하여, YJ -> SH로 변경한 문자열을 받을 수 있다.

 

 

❗️But 만약 중복된 값이 있고, 대/소문자가 있다면?

let str1 = "HelLo, My name is Lee"

let str2 = str1.replace("L", "l")
console.log(str2) // Hello, My name is Lee
👉🏻 output : 주석 처리 확인
✅  replace()는 대소문자를 구분하며, 중복값이 있는 경우에는 문자열의 앞에서부터 해당 값을 찾아 한 개만 대체값으로 변경한다.
따라서 대소문자 구분을 없애기 위해  옵션으로 'i'를 사용하고, 중복값을 모두 대체하기 위해 'g'를 사용해야 한다. 

 

 

 

🫠 replaceAll()

> 입력 형식 : replaceAll('원본 문자', '변경할 문자')

> 중복값을 모두 대체값으로 변경

/* replaceAll() */

let str1 = "HelLo, My name is Lee"

let str2 = str1.replaceAll("L", "l")
console.log(str2) // Hello, My name is lee
👉🏻 output : 주석 처리 확인
✅  replaceAll()을 사용하면 중복된 값을 모두 선택해 변경값으로 대체할 수 있다. 

 

 

 

🫠 replace() & replaceAll() 응용 ①

/* 문자열에서 숫자만 출력하기 */

let str1 = '1a2a3a4a5a6a7a8a9a
console.log(str1.replaceAll('a', '')) // 123456789

/* 특정 문자 제거하기 */

let str2 = 'BAAABAMMMMMM!'
let del = 'B'
console.log(str2.replaceAll(del, '')) // AAAAMMMMMM!
👉🏻 output : 주석 처리 확인

 

 

 

🫠 replace() & replaceAll() 응용 ②

/* 문자열에서 모음(aeiou) 제거하기 */

let str1 = 'hello, everyone! nice to meet you :)'

console.log(str1.replace(/[aeiou]/g, '')) // hll, vryn! nc t mt y :)
👉🏻 output : 주석 처리 확인
✅  replace() 원본 문자열에 정규표현식을 사용하여, 모음에 대한 전체값을 변경해 준다.

 

 

 

+ 🫠 new RegExp()

> ' ' 문법을 통해 생성자로 사용 (replaceAll()을 대신해 사용할 수 있음)

/* 정규표현식(new RegExp()) */

function deleteStr(str, del) {
  let del_str = new RegExp(del, 'g')
  return str.replace(del_str, '')
}

let str1 = 'hello, everyone! nice to meet you :)'
console.log(deleteStr(str1, 'e')) // hllo, vryon! nic to mt you :)
👉🏻 output : 주석 처리 확인
✅  new RegExp 생성자함수를 사용하여 del의 인자값인 'e' 전부를 전체에서 삭제해 주었다.