[Javascript] replace(/'바꿀 문자열'/gi,'바뀔 문자열'), 전체 문자열 바꾸기
var text = 'aaaabbbbcccc';
var regexForB = /b/gi; // b 문자 전체
var regexForC = /c/gi; // c 문자 전체
text
.replace(regexForB, 'a') // aaaaaaaacccc
.replace(regexForC, 'a') // aaaaaaaaaaaa
// 출처 : https://deeplify.dev/front-end/js/replace-and-replace-all
g는 글로벌, 모든 문자열을 뜻하며
i는 대소문자 구분 없이 replace 하겠다는 뜻이다.
참고)
정규 표현식 - JavaScript | MDN
정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 ,
developer.mozilla.org
추가)
var pn = '010-1234-5678';
pn.replace(/[\+][0-9]{2}[ ]/,'0');
/ / 안에 있는 부분을 하나하나 뜯어보자면 먼저
1. [\+] 에서 \는 +가 정규식에서 쓰이는 특수 패턴일 경우
그 특수패턴으로 읽지 않고 '+'라는 문자 자체로 보겠다는 것을 의미한다.
예를 들어 /a*/ 에서의 특수문자 '*'는 0개 이상의 'a' 문자가 등장함을 나타낸다.
그러나 이런 특수한 패턴을 읽지 않고 'a*'라는 문자 자체를 찾기 위해서는
* 앞에 \를 적어주어 특수패턴이 아닌 문자 자체라는 것을 나타내줄 수 있다.
2. [0-9] 는 0에서부터 9까지의 숫자를 의미한다. (0, 1, 2, 3, ..., 9)
3. {2}는 앞의 문자가 2번 나타나는 부분에 대응된다.
예를 들어, /a{2}/는 "candy,"의 'a'에는 대응되지 않지만, "caandy,"의 모든 a 와, "caaandy."의 첫 두 a 에는 대응된다.
4. [ ]는 빈칸이다.
예측하건데 아마 +82 등 국가코드가 붙어있는 경우 +82 10-1234-5678 과 같이 표시되는데, 이를
010-1234-5678로 바꾸기 위한 replace 구문이 아닐까 생각된다.