다음과 같은 값들이 있다고 가정해 보겠습니다.
'6778922'
'76633 56 1443'
'8888 4532 3232 9999'
여기서 목표는 앞부분의 문자들을 별표 4개(****)로 대체하고, 마지막 3자리만 화면에 표시하는 것입니다. 이런 기법은 카드 번호나 계좌번호처럼 민감한 정보를 일부만 노출해야 할 때 실무에서 자주 활용됩니다.
원하는 출력 결과는 다음과 같습니다.
**** 922
**** 443
**** 999
replace()와 정규식으로 구현하기
이런 조건을 처리할 때는 replace() 메서드를 사용하고, 그 안에 정규식(regex)을 함께 설정하면 됩니다.
핵심 정규식인 /.+(.{3})$/의 동작 방식을 살펴보면 다음과 같습니다.
.+: 임의의 문자를 하나 이상 최대한 많이 매칭합니다(공백 포함).(.{3})$: 문자열 끝($)에 위치한 정확히 3개의 문자를 캡처 그룹으로 저장합니다.$1: 치환 문자열에서 캡처 그룹, 즉 마지막 3자리를 참조합니다.
결국 문자열에서 마지막 3자리를 제외한 나머지 전체가 "**** "로 교체되고, 그 뒤에 마지막 3자리가 붙게 됩니다.
예제 코드
const hideDataWithDot = value => value.replace(/.+(.{3})$/, "**** $1");
console.log(hideDataWithDot('6778922'));
console.log(hideDataWithDot('76633 56 1443'));
console.log(hideDataWithDot('8888 4532 3232 9999'));프로그램 실행 방법
위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo236.js라고 가정하겠습니다.
출력 결과
실행 결과는 다음과 같습니다.
PS C:\Users\Amit\javascript-code> node demo236.js
**** 922
**** 443
**** 999
참고로 이 정규식은 문자열 길이가 최소 4자 이상일 때만 동작합니다. 공백이 포함된 문자열도 문제없이 처리되므로, 다양한 형식의 데이터를 손쉽게 마스킹할 수 있습니다.