티스토리 뷰

JavaScript String 객체에는 replace 라는 함수가 있다. 일반적인 사용은 다음과 같다.
> "Handsome Guy".replace("Guy","Sangpil")
'Handsome Sangpil'
하지만 복잡하게 사용할 수도 있다. 우선 첫번째로 "Guy" 대신, 정규표현식이 들어갈 수 있고,
"Sangpil"대신 함수가 들어갈 수 있다. 다음처럼,...
> "Handsome Guy".replace(/Guy/, function(){return "Sangpil";});
'Handsome Sangpil'
이런 형태로 쓰일때, 함수는 기본적으로 다음과 같은 매개변수를 받게 된다.
첫번째 - 정규표현식과 일치하는 문자열
두번째 - 정규표현식 내에 존재하는 첫번째 구룹문자.
세번째 - 정규표현식 내에 존재하는 두번째 구룹문자.
...
뒤에서 두번째 - offset: 일치하는 문자열의 시작 위치 값.
마지막 - 입력된 전체 문자열.

위의 예제에서 살펴보면,
첫번째 - 'Guy'
뒤에서 두번째 - 9 (9번째 Index 값에 Guy의 'G' 가 나타남.)
마지막 - 'Handsome Guy'

이 경우는 정규표현식에 그룹이 없기 때문에 의미상의 두번째 세번째... 매개변수는 넘어오지 않게 된다.


마지막으로 잊지 말아야 할 것은, 전역으로 검사를 할 경우, 뒤에 함수도 매칭된 수 만큼 호출된다는 것이다.
function replacer(str, p1, p2, offset, s){
	return "!HERE!";
}
var newStr = "XXXXz XXXzz XXzzz Xzzzz".replace(/(X+)(z+)/g, replacer);
console.log(newStr); // !HERE! !HERE! !HERE! !HERE!

출처: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함