javascript에서 어떤 대상 문자를 원하는 문자로 변환할때는 replace 함수를 이용한다.
출처: https://takeardor.tistory.com/47 [기록하고 싶은 기록들:티스토리]
대상문자열.replace('대상문자', '바꿀문자')
첫번째로 일치하는 값만 바꿔준다(주의 필요! /ig가 필요한지 항상 생각하기)
immutble이므로 원래 문자열을 바꾸지는 않고 새로운 문자열을 반환한다
var str = "abcd";
str.replace('a', 'x');
console.log(str.replace('a', 'x') //"xbcd"
console.log(str) //abcd
문자열내 전체를 바꾸고 싶다면?
replace(/대상문자/옵션, '바꿀문자')
ex. str.replace(/a/g, 'x');
replace(/대상문자/옵션, '바꿀문자')
ex. str.replace(/a/gi, 'x');
옵션 종류
1. replace(/대상문자/g, '바꿀문자')
: g(global) 는 모든 문자들을 검색하여 변환하겠다!!
str.replace(/./gi, ' ');
모든 문자들이 공백이 되어버린다.
replace 수행시 .은 모든 문자로 인식해버려서 다 변환해버린다.
str.replace(/\./gi, ' ');
점(.) 앞에 \ 역슬래쉬 하나를 추가해주면 원하는 의도대로 동작한다.
점(.) 및 백슬래시()
일부 문자는 정규 표현식에서 사용할 때의 의미와, 기타 다른 맥락에서 사용할 때의 의미가 완전히 다릅니다.
점
또한 수학에서는 정수와 소수 부분을 구분하는 소수점(.)으로 사용됩니다.
정규 표현식에서는 먼저 정규 표현식의 맥락에서 특수 문자를 평가합니다. 즉, 점이 있으면 어떤 한 문자에 일치하는 것으로 인식합니다.
예를 들어 정규 표현식 1.은 다음과 일치합니다.
11
1A
정규 표현식 1.1은 다음과 일치합니다.
111
1A1
IP 주소를 정규 표현식으로 제공하면 의외의 결과를 얻게 됩니다. 예를 들어 정규 표현식 0.0.0.0은 다음과 일치합니다.
0102030
0a0b0c0
점을 모든 다른 문자와 일치하는 데 사용되는 특수 문자가 아니라 IP 주소의 각 부분을 구분하기 위한 원래의 의미로 정규 표현식에 표시되도록 하려면 이를 적용하기 위한 신호를 입력해야 합니다. 그 신호가 바로 백슬래시()입니다. 정규 표현식에 백슬래시가 표시되면 그 다음 문자를 문자 그대로 해석해야 한다는 것을 의미합니다. 따라서 IP 주소 0.0.0.0과 일치하는 정규 표현식은 다음과 같습니다.
0\.0\.0\.0
백슬래시를 사용하여 특수 문자를 이스케이프 처리하고 문자 그대로 해석합니다. 예를 들면 다음과 같습니다.
\\(백슬래시를 이스케이프 처리)"
\[(대괄호를 이스케이프 처리)
\{(중괄호를 이스케이프 처리)
\.(점을 이스케이프 처리)