본문 바로가기

프로그래밍/Javascript

Javascript 정규표현식 - n번째 글자만 '*'로 치환할 때

반응형

보통 이름이나 전화번호 같은 개인정보를 이렇게 처리한다.

'홍길동'이 실제 데이터이면 '홍*동' 같은 식으로 보여주는 것이다. 서버에서 처리해야 하는 것이 당연하지만, 경우에 따라 프론트에서 처리해도 무방한 데이터도 있다. 그럴때는 이렇게 변환해주면 된다.

n번째 문자만 치환하는 콛

아래 코드는 3자리 이상 문자열일 때, 2번째 문자만 '*'로 변환하는 예제이다. 코드를 잘 살펴보면 응용해서 사용할 수 있을 것이다.

const replaceSecondChar = (str) => {
  return str.length >= 3 ? str.replace(/(?<=.{1}).(?=.{1,2})/, '*') : str;
};

console.log(replaceSecondChar('abc')); // Output: 'a*c'
console.log(replaceSecondChar('abcd')); // Output: 'a*cd'
console.log(replaceSecondChar('독거노인')); // Output: '독*노인'
console.log(replaceSecondChar('a')); // Output: 'a'

하나 더 보자. 아래 예제는 2~4자리를 치환한다.

const replaceMiddleChars = (str) => {
  return str.length >= 4 ? str.replace(/(?<=.{1}).{2}(?=.{1})/, '**') : str;
};

console.log(replaceMiddleChars('abcdef')); // Output: 'a**def'
console.log(replaceMiddleChars('abcd')); // Output: 'a**d'
console.log(replaceMiddleChars('독거노인')); // Output: '독**노인'
console.log(replaceMiddleChars('ab')); // Output: 'ab'

정규식에서는 positive lookbehind (?<=.{1}) 을 사용하여 2에서 4번째 문자 앞의 한 글자와 매치되는 것을, positive lookahead (?=.{1}) 을 사용하여 2에서 4번째 문자 뒤의 한 글자와 매치되는 것을 찾는다. 그 사이에 있는 .{2} 는 정확히 2개의 문자, 즉 2번째에서 4번째 문자를 매치합니다.

반응형

개발자가 그리는 인스타툰 팔로우하세요!