replace() - 문자열에서 특정 문자 변경

송한솔·2023년 5월 3일

replace(지정한문자열 , 바꿀문자열)

문자열에서 원하는 문자열로 변경 할 수 있습니다,
’’를 통해 문자열을 제거할 수도 있습니다

예시 1.

const a = 'asdf';
const b = 'a';
const c = a.replace(b,'');
console.log(c); // 'sdf'

그러나, 이 사용 방법에는 문제가 있습니다.

const a = 'asadafa';
const b = 'a';
const c = a.replace(b,'');
console.log(c); // sadafa

보는바와 같이 첫번째 a만 제거되고 후에 나온 a는 제거가 되지 않는걸 확인할 수 있습니다.

정규식( RegExp() )을 통한 ‘a’ 전체 반환후 제거하기

const a = 'asadafa';
const b = 'a';
const c = a.replace(new RegExp(b,'g'),'');
console.log(c); // sdf

여기서 ‘g’ 는 global을 의미하는 정규식 플래그입니다.
따라서 이 정규식은 전체 문자열 a에서 b에 해당하는 문자열을 모두 찾는다는 의미입니다.

비슷하지만 다른 방식의 정규식 리터럴

const a = 'BCBdbe';
const b = 'B';
const d = a.replace(/B/g, '');
console.log(d); // 'Cdbe'

정규식 리터럴의 /**여기**/g 에는 **변수**가 ****들어갈 수 없습니다.

따라서 동적사용이 불가능합니다.

정규식 2.

// 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때
고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수,
solution을 완성해주세요.

// 제한 조건
phone_number는 길이 4 이상, 20이하인 문자열입니다.

// 입출력 예
phone_number	return
"01033334444"	"*******4444"
"027778888"	    "*****8888"

// 정규식을 사용한 풀이 방법
function solution(phone_number) {
    var answer = phone_number.replace(/\d(?=\d{4})/g, "*"); 
    return answer;
}
  1. \d: 숫자를 의미하는 메타 문자입니다. [0-9]와 같은 의미를 가집니다.
  2. (?=\d{4}): 긍정형 전방탐색입니다. 이 패턴은 바로 뒤에 4개의 숫자가 있는 숫자를 찾습니다. 전방탐색은 패턴에 일치하는 위치를 찾지만, 실제로 검색 결과에 포함되지 않습니다.
  3. g: 전역 플래그입니다. 이 플래그는 정규식에 의해 발견된 모든 일치 항목을 찾으려고 합니다. 플래그가 없으면 첫 번째 일치 항목만 찾습니다.

※ 만약 앞의 4개의 숫자를 칭하고 싶다면?
(?<=\d{4})으로 하면 됩니다.

0개의 댓글