String.replace(…) test On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS testString is "It's the end of the world as we know it, and I feel fine." PASS testString.replace('end','BEGINNING') is "It's the BEGINNING of the world as we know it, and I feel fine." PASS testString.replace(/[aeiou]/gi,'-') is "-t's th- -nd -f th- w-rld -s w- kn-w -t, -nd - f--l f-n-." PASS testString.replace(/[aeiou]/gi, function Capitalize(s){ return s.toUpperCase(); }) is "It's thE End Of thE wOrld As wE knOw It, And I fEEl fInE." PASS testString.replace(/([aeiou])([a-z])/g, function Capitalize(){ return RegExp.$1.toUpperCase()+RegExp.$2; }) is "It's the End Of the wOrld As we knOw It, And I fEel fIne." PASS testString.replace(/([aeiou])([a-z])/g, function Capitalize(orig,re1,re2) { return re1.toUpperCase()+re2; }) is "It's the End Of the wOrld As we knOw It, And I fEel fIne." PASS testString.replace(/(.*)/g, function replaceWithDollars(matchGroup) { return '$1'; }) is "$1$1" PASS testString.replace(/(.)(.*)/g, function replaceWithMultipleDollars(matchGroup) { return '$1$2'; }) is "$1$2" PASS testString.replace(/(.)(.*)/, function checkReplacementArguments() { return arguments.length; }) is "5" PASS testReplace(/x/g, false) is "0y1y2" FAIL testReplace(/x/g, true) should throw an exception. Was 0y1y2. PASS testReplace(/x/, false) is "0y1x2" PASS testReplace(/x/, true) is "0y1x2" PASS testReplace(/x/g, false); re.lastIndex is 0 FAIL testReplace(/x/g, true); re.lastIndex should throw an exception. Was 3. PASS testReplace(/x/, false); re.lastIndex is 3 PASS testReplace(/x/, true); re.lastIndex is 3 PASS testReplace(/x/g, false) is "0y1y2" FAIL testReplace(/x/g, true) should throw an exception. Was 0y1y2. PASS testReplace(/x/, false) is "0y1x2" PASS testReplace(/x/, true) is "0y1x2" PASS testReplace(/x/g, false); re.lastIndex is 0 FAIL testReplace(/x/g, true); re.lastIndex should throw an exception. Was 3. PASS testReplace(/x/, false); re.lastIndex is 3 PASS testReplace(/x/, true); re.lastIndex is 3 PASS testReplace(/x/g, false) is "01122" PASS testReplace(/x/g, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of [object RegExp]. PASS testReplace(/x/, false) is "041x2" PASS testReplace(/x/, true) threw exception TypeError: Cannot assign to read only property 'lastIndex' of [object RegExp]. PASS testReplace(/x/g, false); re.lastIndex is 2 PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of [object RegExp]. PASS testReplace(/x/, false); re.lastIndex is 4 PASS testReplace(/x/, true); re.lastIndex threw exception TypeError: Cannot assign to read only property 'lastIndex' of [object RegExp]. PASS try { testReplace(/x/g, false); throw 0; } catch (e) { }; replacerCalled; is true FAIL try { testReplace(/x/g, true); throw 0; } catch (e) { }; replacerCalled; should be false. Was true. PASS successfullyParsed is true TEST COMPLETE