Baseline Widely available
String
ê°ì replace()
ë©ìëë pattern
ì ë¨ì¼, ì¼ë¶ í¹ì 모ë ì¼ì¹ íëª©ì´ replacement
ë¡ ëì¹ë ìë¡ì´ 문ìì´ì ë°íí©ëë¤. pattern
ì 문ìì´ í¹ì RegExp
ì¼ ì ììµëë¤. replacement
ë 문ìì´ì´ë ê° ì¼ì¹ í목ë§ë¤ í¸ì¶ëë í¨ìì¼ ì ììµëë¤. ë§ì½ pattern
ì´ ë¬¸ìì´ì´ë¼ë©´, ì¤ì§ 첫 ë²ì§¸ íëª©ë§ ë³ê²½ë©ëë¤. ì본 문ìì´ì ë³íì§ ììµëë¤.
const paragraph = "I think Ruth's dog is cuter than your dog!";
console.log(paragraph.replace("Ruth's", "my"));
// Expected output: "I think my dog is cuter than your dog!"
const regex = /Dog/i;
console.log(paragraph.replace(regex, "ferret"));
// Expected output: "I think Ruth's ferret is cuter than your dog!"
구문
replace(pattern, replacement)
매ê°ë³ì
pattern
문ìì´ì´ê±°ë Symbol.replace
ë©ìëê° ìë ê°ì²´ì¼ ì ììµëë¤. ì¼ë°ì ì¸ ì를 ë¤ìë©´ ì ê· ííìì´ ììµëë¤. Symbol.replace
ë©ìëê° ìë 모ë ê°ì 문ìì´ë¡ ê°ì ë³íë©ëë¤.
replacement
문ìì´ì´ë í¨ìê° ë ì ììµëë¤.
pattern
ê³¼ ì¼ì¹íë ë¶ë¶ 문ìì´ì ëì²´í©ëë¤. ì¬ë¬ í¹ì ëì²´ í¨í´ì ì§ìí©ëë¤. ìë ëì²´í ë´ì©ì¼ë¡ 문ìì´ë¡ ì§ì í기를 ì°¸ê³ íì¸ìí¨í´ì ë¨ì¼, ì¼ë¶ í¹ì 모ë ì¼ì¹ íëª©ì´ ëª ìë ëì²´ 문ìì´ë¡ ëì¹ë ìë¡ì´ 문ìì´ì ë°íí©ëë¤.
ì¤ëªì´ ë©ìëë í¸ì¶ë 문ìì´ ê°ì ë³ê²½íì§ ììµëë¤. ì 문ìì´ì ë°íí©ëë¤.
문ìì´ í¨í´ì í ë²ë§ ë°ëëë¤. ì ì ê²ì ë° ë°ê¾¸ê¸°ë¥¼ ìííë ¤ë©´ g
íëê·¸ê° ìë ì ê· ííìì ì¬ì©íê±°ë replaceAll()
ì ëì ì¬ì©íì¸ì.
pattern
ì´ Symbol.replace
ë©ìëê° ìë ê°ì²´(RegExp
ê°ì²´ í¬í¨)ì¸ ê²½ì°, í´ë¹ ë©ìëë ëì 문ìì´ê³¼ replacement
를 ì¸ìë¡ ì¬ì©íì¬ í¸ì¶ë©ëë¤. ê·¸ ë°í ê°ì replace()
ì ë°í ê°ì´ ë©ëë¤. ì´ ê²½ì° replace()
ì ëìì ì ì ì¼ë¡ [Symbol.replace]()
ë©ìëë¡ ì¸ì½ë©ë©ëë¤. ì를 ë¤ì´, ìë ì¤ëª
ìì "그룹 캡ì²"ì ëí ì¸ê¸ì ì¤ì ë¡ RegExp.prototype[Symbol.replace]()
ìì ì ê³µíë 기ë¥ì
ëë¤.
pattern
ì´ ë¹ ë¬¸ìì´ì¸ ê²½ì° ë¬¸ìì´ì ìì ë¶ë¶ì ëì²´ 문ìì´ì´ ì¶ê°ë©ëë¤.
"xxx".replace("", "_"); // "_xxx"
íëê·¸ê° g
ì¸ ì ê·ìì replace()
ê° ë ë² ì´ì ëì²´íë ì ì¼í ê²½ì°ì
ëë¤. ì ê·ì ìì±(í¹í sticky íëê·¸)ì´ replace()
ì ìí¸ìì©íë ë°©ë²ì ëí ìì¸í ë´ì©ì RegExp.prototype[Symbol.replace]()
를 ì°¸ê³ íì¸ì.
ëì²´ 문ìì´ìë ë¤ìê³¼ ê°ì í¹ì ëì²´ í¨í´ì´ í¬í¨ë ì ììµëë¤.
í¨í´ ì½ì 문ìì´$$
"$"
를 ì½ì
í©ëë¤. $&
ì¼ì¹ë ë¶ë¶ 문ìì´ì ì½ì
ëë¤. $`
ì¼ì¹íë ë¶ë¶ 문ìì´ ìì ìë 문ìì´ ë¶ë¶ì ì½ì
í©ëë¤. $'
ì¼ì¹íë ë¶ë¶ 문ìì´ ë¤ì ì¤ë 문ìì´ ë¶ë¶ì ì½ì
í©ëë¤. $n
n
ë²ì§¸(1
ë¡ë¶í° ììíë) ìº¡ì² ê·¸ë£¹ì ì½ì
í©ëë¤. ì¬ê¸°ì n
ì 100ë³´ë¤ ìì ìì ì ìì
ëë¤. $<Name>
Name
ì´ ê·¸ë£¹ ì´ë¦ì¸ ëª
ëª
ë ìº¡ì² ê·¸ë£¹ì ì½ì
í©ëë¤.
$n
ë° $<Name>
ì pattern
ì¸ìê° RegExp
ê°ì²´ì¸ ê²½ì°ìë§ ì¬ì©í ì ììµëë¤. pattern
ì´ ë¬¸ìì´ì´ê±°ë í´ë¹ ìº¡ì² ê·¸ë£¹ì´ ì ê· ííìì ìë ê²½ì° í¨í´ì 리í°ë´ë¡ ëì²´ë©ëë¤. ê·¸ë£¹ì´ ì¡´ì¬íì§ë§ ì¼ì¹íì§ ìë ê²½ì°(ì´ë ë¶ì¼ì¹ì ì¼ë¶ì´ë¯ë¡) ë¹ ë¬¸ìì´ë¡ ëì²´ë©ëë¤.
"foo".replace(/(f)/, "$2");
// "$2oo"; ì ê·ìì ë ë²ì§¸ 그룹ì ê°ì§ì§ ììµëë¤.
"foo".replace("f", "$1");
// "$1oo"; í¨í´ì´ 문ìì´ì´ë©°, ì´ë í 그룹ì ê°ì§ì§ ììµëë¤.
"foo".replace(/(f)|(g)/, "$2");
// "oo"; ë ë²ì§¸ ê·¸ë£¹ì´ ì¡´ì¬íì§ë§ ì¼ì¹íì§ ììµëë¤.
ëì²´í ë´ì©ì¼ë¡ í¨ì ëª
ìí기
í¨ì를 ë ë²ì§¸ 매ê°ë³ìë¡ ëª ìí ì ììµëë¤. ì´ ê²½ì° í¨ìë ê°ê°ì 문ìì´ ì¼ì¹ê° ë°ìí ëë§ë¤ í¸ì¶ë©ëë¤. ì´ í¨ìì ê²°ê³¼(ë°í ê°)ë ëì²´ 문ìì´ë¡ ì¬ì©ë©ëë¤.
ì°¸ê³ : ììì ì¸ê¸í í¹ì ëì²´ í¨í´ì ëì²´ì í¨ììì ë°íë 문ìì´ìë ì ì©ëì§ ììµëë¤.
í¨ì ìê·¸ëì²ë ìëì ê°ìµëë¤.
function replacer(match, p1, p2, /* â¦, */ pN, offset, string, groups) {
return replacement;
}
í¨ìì ì¸ìë ìëì ê°ìµëë¤.
match
$&
ì í´ë¹í©ëë¤.p1, p2, â¦, pN
replace()
ì 첫 ë²ì§¸ ì¸ìë¡ ì ê³µë ìº¡ì² ê·¸ë£¹(ëª
ëª
ë ìº¡ì² ê·¸ë£¹ í¬í¨)ìì ì°¾ì n
ë²ì§¸ 문ìì´ì RegExp
ê°ì²´ì
ëë¤. (ìì $1
, $2
ë±ì í´ë¹í©ëë¤.) ì를 ë¤ì´ pattern
ì´ /(\a+)(\b+)/
ì´ë¼ë©´, p1
ì \a+
ì ì¼ì¹íì§ë§ p2
ë \b+
ì ì¼ì¹í©ëë¤. ê·¸ë£¹ì´ ë¶ì¼ì¹ì ì¼ë¶ì¸ ê²½ì°(ì: "abc".replace(/(a)|(b)/, replacer)
), ì¼ì¹íì§ ìë ëì²´ì´ë undefined
ì´ ë©ëë¤.offset
'abcd'
ì´ê³ ì¼ì¹íë ë¶ë¶ 문ìì´ì´ 'bc'
ì¸ ê²½ì° ì´ ì¸ìë 1
ì´ ë©ëë¤.string
groups
undefined
)ì¸ ê°ì²´ì
ëë¤. pattern
ì ëª
ëª
ë ìº¡ì² ê·¸ë£¹ì´ íë ì´ì í¬í¨ë ê²½ì°ìë§ ì¡´ì¬í©ëë¤.ì íí ì¸ìì ê°ìë 첫 ë²ì§¸ ì¸ìê° RegExp
ê°ì²´ì¸ì§, ê·¸ë ë¤ë©´ ì¼ë§ë ë§ì ìº¡ì² ê·¸ë£¹ì´ ìëì§ì ë°ë¼ ë¬ë¼ì§ëë¤.
ìë ìì ë newString
ì 'abc - 12345 - #$*%'
ë¡ ì¤ì í©ëë¤.
function replacer(match, p1, p2, p3, offset, string) {
// p1 ì ì«ìê° ìëë©° p2 ë ì«ìì´ë©°, p3 ë ìí벳과 ì«ìê° ìëëë¤.
return [p1, p2, p3].join(" - ");
}
const newString = "abc12345#$*%".replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
console.log(newString); // abc - 12345 - #$*%
첫 ë²ì§¸ 매ê°ë³ìì ì ê· ííìì´ ì ìì¸ ê²½ì° ì´ í¨ìë ëì²´í 문ìì´ ì ì²´ ì¼ì¹ ê°ê°ì í목ì ëí´ ì¬ë¬ ë² í¸ì¶ë©ëë¤.
ìì replace()ìì ì ê· ííì ì ìí기ë¤ì ìì ììë replace()
ìì ë/ì문ì 무ì íë그를 í¬í¨í ì ê· ííìì ì ìí©ëë¤.
const str = "Twas the night before Xmas...";
const newstr = str.replace(/xmas/i, "Christmas");
console.log(newstr); // Twas the night before Christmas...
ì´ë 'Twas the night before Christmas...'
를 ì¶ë ¥í©ëë¤.
ì ì ê·¸ë¦¬ê³ ëì문ì êµ¬ë¶ ë¬´ì íëê·¸ì í¨ê» replace() ì¬ì©íê¸°ì°¸ê³ : ì ê· ííì ìë´ì를 ë³´ìë©´ ì ê· ííìì ëí´ ë ë§ì ì¤ëª ì ë³´ì¤ ì ììµëë¤.
ì ì 문ìì´ ëì²´ë ì ê· ííìì¼ë¡ë§ ê°ë¥í©ëë¤. ë¤ì ìì ë ì ê· ííìì´ ì ì ê·¸ë¦¬ê³ ëì문ì 무ì íëê·¸ì´ í¬í¨ëì´ ìì´ì replace()
ê° ë¬¸ìì´ìì 'apple'
ì´ ëíë ëë§ë¤ 'orange'
ë¡ ë¬¸ìì´ì ë°ê¾¸ëë¡ íì©í©ëë¤.
const re = /apples/gi;
const str = "Apples are round, and apples are juicy.";
const newstr = str.replace(re, "oranges");
console.log(newstr); // oranges are round, and oranges are juicy.
ì´ë 'oranges are round, and oranges are juicy'
를 ì¶ë ¥í©ëë¤.
ë¤ì ì¤í¬ë¦½í¸ë 문ìì´ì ë¨ì´ì ìì를 ë°ê¿ëë¤. ëì²´ 문ìì´ì ê²½ì°, ì¤í¬ë¦½í¸ë 그룹 캡ì²ê³¼ $1
ë° $2
ëì²´ í¨í´ì ì¬ì©í©ëë¤.
const re = /(\w+)\s(\w+)/;
const str = "Maria Cruz";
const newstr = str.replace(re, "$2, $1");
console.log(newstr); // Cruz, Maria
ì´ë 'Cruz, Maria'
를 ì¶ë ¥í©ëë¤.
ì´ ìììë 문ìì´ì ë문ìê° í¬í¨ë 모ë íëª©ì´ ì문ìë¡ ë³íëê³ ì¼ì¹ ìì¹ ë°ë¡ ìì íì´íì´ ì½ì ë©ëë¤. ì¬ê¸°ì ì¤ìí ì ì ì¼ì¹íë íëª©ì´ ëì²´ 문ìì´ë¡ ë°íë기 ì ì ì¶ê° ìì ì´ íìíë¤ë ê²ì ëë¤.
ëì²´ í¨ìë ì¼ì¹íë ì¤ëí«ì 매ê°ë³ìë¡ ë°ì ì´ë¥¼ ì¬ì©íì¬ ëì문ì를 ë³ííê³ íì´íì ì°ê²°í í ë°íí©ëë¤.
function styleHyphenFormat(propertyName) {
function upperToHyphenLower(match, offset, string) {
return (offset > 0 ? "-" : "") + match.toLowerCase();
}
return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
}
styleHyphenFormat('borderTop')
ì´ ì£¼ì´ì§ë©´ 'border-top'
ì´ ë°íë©ëë¤.
ìµì¢
ì¹íì´ ì´ë£¨ì´ì§ê¸° ì ì ì¼ì¹ í목ì 결과를 ë ë³ííê³ ì¶ê¸° ë문ì í¨ì를 ì¬ì©í´ì¼ í©ëë¤. ì´ë ê² íë©´ toLowerCase()
ë©ìë ì´ì ì ì¼ì¹ í목ì ê°ì ë¡ íê°íê² ë©ëë¤. í¨ìê° ìë ì¼ì¹ë¥¼ ì¬ì©íì¬ ì´ ìì
ì ìëíë¤ë©´ toLowerCase()
ë ìë¬´ë° í¨ê³¼ê° ìì ê²ì
ëë¤.
// ìëíì§ ììµëë¤
const newString = propertyName.replace(/[A-Z]/g, "-" + "$&".toLowerCase());
ì´ë 문ì를 í¨í´ì¼ë¡ ì¬ì©í기 ì ì '$&'.toLowerCase()
ê° ë¨¼ì 문ìì´ ë¦¬í°ë´ë¡ íê°ë기 ë문ì
ëë¤(ê²°ê³¼ì ì¼ë¡ ëì¼í '$&'
ê° ë©ëë¤).
ë¤ì ìììë íì¨ ì¨ë를 ê·¸ì ììíë ìì¨ ì¨ë를 ëì²´í©ëë¤. íì¨ëë "F"
ë¡ ëëë ì«ìì¬ì¼ í©ëë¤. ì´ í¨ìë "C"
ë¡ ëëë ìì¨ ì«ì를 ë°íí©ëë¤. ì를 ë¤ì´ ì
ë ¥ ì«ìê° "212F"
ì¸ ê²½ì° í¨ìë "100C"
를 ë°íí©ëë¤. ì«ìê° "0F"
ì´ë©´ í¨ìë "-17.777777777778C"
를 ë°íí©ëë¤.
ì ê·ì test
ë F
ë¡ ëëë ì«ìê° ìëì§ íì¸í©ëë¤. íì¨ ì¨ëì ì«ìë ë ë²ì§¸ ë§¤ê° ë³ìì¸ p1
ì íµí´ í¨ìì ì ê·¼í ì ììµëë¤. ì´ í¨ìë f2c()
í¨ìì 문ìì´ë¡ ì ë¬ë íì¨ ì¨ë ì«ìì ë°ë¼ ìì¨ ì«ì를 ì¤ì í©ëë¤. ê·¸ë° ë¤ì f2c()
ë ìì¨ ì«ì를 ë°íí©ëë¤. ì´ í¨ìë Perlì s///e
íëê·¸ì ê°ê¹ìµëë¤.
function f2c(x) {
function convert(str, p1, offset, s) {
return `${((p1 - 32) * 5) / 9}C`;
}
const s = String(x);
const test = /(-?\d+(?:\.\d*)?)F\b/g;
return s.replace(test, convert);
}
ì ë¤ë¦ ëì²´ì ë§ë¤ê¸°
ì¼ì¹íë 모ë 문ìì´ì ì¤íì
ë°ì´í°ë¥¼ ì¶ê°íë ëì²´ì를 ë§ë¤ê³ ì¶ë¤ê³ ê°ì í´ ë³´ê² ìµëë¤. replacer í¨ìë ì´ë¯¸ offset
매ê°ë³ì를 ë°ê¸° ë문ì ì ê·ìì ì ì ì¼ë¡ ìê³ ìë¤ë©´ 문ì ê° ëì§ ììµëë¤.
"abcd".replace(/(bc)/, (match, p1, offset) => `${match} (${offset}) `);
// "abc (1) d"
ê·¸ë¬ë ì´ ëì²´ìë 모ë ì ê·ì í¨í´ìì ìëíëë¡ íë ¤ë©´ ì¼ë°íí기 ì´ë µìµëë¤. ëì²´ìë ê°ë³ì ì´ë©°, ë°ë ì¸ìì ìë ì¡´ì¬íë ìº¡ì² ê·¸ë£¹ì ìì ë°ë¼ ë¬ë¼ì§ëë¤. ëë¨¸ì§ ë§¤ê°ë³ì를 ì¬ì©í ì ìì§ë§ offset
, string
ë±ì ë°°ì´ë¡ ìì§í ìë ììµëë¤. ì ê·ìì IDì ë°ë¼ groups
ê° ì ë¬ë ìë ìê³ ì ë¬ëì§ ìì ìë ìë¤ë ì¬ì¤ ë문ì ì´ë¤ ì¸ìê° offset
ì í´ë¹íëì§ ì¼ë°ì ì¼ë¡ ì기 ì´ë µìµëë¤.
function addOffset(match, ...args) {
const offset = args.at(-2);
return `${match} (${offset}) `;
}
console.log("abcd".replace(/(bc)/, addOffset)); // "abc (1) d"
console.log("abcd".replace(/(?<group>bc)/, addOffset)); // "abc (abcd) d"
ìì addOffset
ìì ë ì ê·ìì ëª
ëª
ë ê·¸ë£¹ì´ í¬í¨ë ê²½ì° ìëíì§ ììµëë¤. ì´ ê²½ì° args.at(-2)
ê° offset
ëì string
ì´ ë기 ë문ì
ëë¤.
ëì groups
ë ê°ì²´ì´ê³ string
ì 문ìì´ì´ê¸° ë문ì ì íì ë°ë¼ ë§ì§ë§ ëª ê°ì ì¸ì를 ì¶ì¶í´ì¼ í©ëë¤.
function addOffset(match, ...args) {
const hasNamedGroups = typeof args.at(-1) === "object";
const offset = hasNamedGroups ? args.at(-3) : args.at(-2);
return `${match} (${offset}) `;
}
console.log("abcd".replace(/(bc)/, addOffset)); // "abc (1) d"
console.log("abcd".replace(/(?<group>bc)/, addOffset)); // "abc (1) d"
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4