프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
phone_number | return |
---|---|
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
function solution(phone_number){
return "*".repeat(phone_number.length - 4) + phone_number.slice(-4);
}
정규표현식에 아주 조금은 익숙해졌다고 생각했는데 ?=
는 처음 보았다. 찾아봤더니 ?=
는 전방탐색의 기호로, 기호 다음에 기준이 될 패턴 문자열이 오는 하위표현식이라고 한다. 괄호 안에서 사용하는데 쉽게 말하면 괄호 안의 ?=
다음에 오는 패턴과 일치하기 직전까지의 문자열을 추출하는 것이다.
\d
: 숫자?=
: 다음에 오는 패턴을 찾아 그 패턴 직전까지만 추출\d{4}
: 숫자 네자리-> 뒤에 숫자 네개가 있는 숫자 (마지막에서 다섯번째 숫자까지만 뒤에 숫자 네개를 가질 수 있음)
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}