참조: MDN_replace()
var newStr = str.replace(regexp|substr, newSubstr|function)
replace는 3가지로 생각하면 쉽다.
g
)이 오는 경우, 함수는 매치될 때마다 계속 호출될 것입니다.인수의 정확한 수는 첫 번째 인수가 RegExp
객체인지 아닌지에 따라 다르며, 소괄호로 묶이는 부분표현식의 갯수에 따라 달라집니다.
예제)
function replacer(match, p1, p2, p3, index, string) {
// p1: is nondigits, p2: digits, and p3: non-alphanumerics
return [p1, p2, p3].join(' - ');
}
let newString = 'abc12345#$*%'.replace(/([^\\d]*)(\\d*)([^\\w]*)/, replacer);
console.log(newString); // abc - 12345 - #$*%
// ([^\\d]*) -> p1
// (\\d*) -> p2
// ([^\\w]*) -> p3
다른예제)
function format(str, rep) {
return str.replace(/\\{(\\d+)\\}/g, () => {
return rep;
});
}
let clickCount = 0;
function showClickCount() {
clickCount++;
let msg = format( '버튼의 클릭 횟수는 {0}회 입니다.', clickCount );
console.log( msg );
}
showClickCount();
// 버튼의 클릭 횟수는 1회 입니다.