문자열에서 원하는 문자열로 변경 할 수 있습니다,
’’를 통해 문자열을 제거할 수도 있습니다
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는 제거가 되지 않는걸 확인할 수 있습니다.
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 에는 **변수**가 ****들어갈 수 없습니다.
따라서 동적사용이 불가능합니다.
// 문제 설명
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때
고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 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;
}
※ 만약 앞의 4개의 숫자를 칭하고 싶다면?
(?<=\d{4})으로 하면 됩니다.