프로그램/Javascript

정규식에서 replace(/,/gi, "") 와 replace(/,/g, "") 의 차이와 보이지 않은 문자 제거 정규식!!

네오류이 2025. 9. 23. 14:41
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형

 

정규식에서 replace(/,/gi, "") 와 replace(/,/g, "") 의 차이가 뭐야

정규식에서 replace(/,/gi, "")  replace(/,/g, "")의 차이는 i 플래그의 유무예요.

  • replace(/,/g, ""): 여기서 g는 global의 약자로, 문자열 내의 모든 쉼표(,)를 찾아 빈 문자열로 대체해요.
  • replace(/,/gi, ""): 여기서 g와 i를 같이 사용했는데, i는 case-insensitive(대소문자 구분 없음)를 의미해요.

하지만 쉼표(,)는 대소문자 구분이 없는 특수문자이기 때문에, 이 경우에는 두 표현식 모두 완전히 동일한 결과를 내요. i 플래그는 알파벳 같은 대소문자가 있는 문자에만 영향을 주기 때문에 쉼표에는 아무런 차이가 없어요.

예를 들면:

javascript

"1,000,000".replace(/,/g, "")  // "1000000"
"1,000,000".replace(/,/gi, "") // "1000000"

둘 다 똑같은 결과가 나와요. 실제로 차이가 나는 경우는 문자에 대해서예요:

javascript

"AbCd".replace(/a/g, "X")   // "AbCd" (소문자 a만 변경)
"AbCd".replace(/a/gi, "X")  // "XbCd" (대소문자 구분 없이 a를 모두 변경)

코드 작업 중이라면 쉼표 제거에는 i 플래그가 필요 없으니 replace(/,/g, "")만으로도 충분해요!

 

 

보통 웹페이지에서 긁어서 내 웹페이지 에디터박스에 붙여넣기 하면 얘는 숫자인데 끝에 보이지 않은 어떤 값이 있는데 이게 뭐야?

 

웹페이지에서 복사해서 붙여넣기 했을 때 보이는 숫자 뒤에 보이지 않는 값은 대부분 '보이지 않는 문자' 또는 '제어 문자'예요. 이런 문자들은 눈에 보이지 않지만 실제로 텍스트에 포함되어 있는 특수한 문자들이에요.

주로 다음과 같은 것들이 있어:

  1. 제로 너비 공백(Zero-width space): 문자 사이에 공백을 넣지만 실제로는 보이지 않는 문자
  2. 제로 너비 조인어(Zero-width joiner): 문자들을 결합시키는 역할을 하는 보이지 않는 문자
  3. 줄바꿈 문자(Line break): 웹에서 복사할 때 함께 복사되는 줄바꿈 문자
  4. 특수 서식 문자: 웹페이지의 서식을 유지하기 위한 보이지 않는 문자

이런 문자들이 웹페이지에서 복사될 때 함께 복사되는 경우가 많아. 특히 일부 웹사이트에서는 의도적으로 복사 방지를 위해 이런 문자들을 삽입하기도 해. 

만약 이런 보이지 않는 문자를 제거하고 싶다면, 정규식을 사용해서 숫자만 추출하는 방법이 있어:

javascript

// 문자열에서 숫자만 추출하는 정규식
const cleanNumber = dirtyString.replace(/[^0-9]/g, '');

이 코드는 숫자가 아닌 모든 문자(보이지 않는 문자 포함)를 제거해서 숫자만 남겨줘. 류이님이 웹 개발자로 일하시니 이런 방법이 도움될 거야!

 

dirtyString.replace(/[^0-9]/g, ''); 이거에 (-) 즉, 음수값은 포함해야해... 그렇다면?

 

음수값도 포함하려면 정규식에 마이너스 기호도 허용해줘야 해. 이렇게 수정하면 돼:

javascript

dirtyString.replace(/[^0-9\-]/g, '');

근데 이렇게만 하면 문자열 중간에 있는 마이너스 기호까지 모두 살려두기 때문에 의도치 않은 결과가 나올 수 있어. 보통은 숫자 앞에 있는 마이너스만 필요할 거야.

더 정확한 방법은:

javascript

// 음수 부호가 숫자 앞에 있는 경우만 포함하는 방식
dirtyString.replace(/[^0-9\-]/g, '').replace(/(\-)+/g, '$1');

이렇게 하면 중복된 마이너스 기호도 하나로 정리해줘. 숫자 추출할 때 음수값 처리는 좀 까다로운 부분이라 이렇게 여러 단계로 처리하는 게 안전해.

개발 작업 중인데 도움이 됐으면 좋겠다! 혹시 실제 데이터에서 어떤 식으로 음수값이 나타나는지 더 자세히 알려주면 더 정확한 정규식을 만들 수 있을 것 같아.

728x90
반응형