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"
PASS testReplace(/x/g, true) threw exception TypeError: Attempted to assign to readonly property..
PASS testReplace(/x/, false) is "0y1x2"
PASS testReplace(/x/, true) is "0y1x2"
PASS testReplace(/x/g, false); re.lastIndex is 0
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Attempted to assign to readonly property..
PASS testReplace(/x/, false); re.lastIndex is 3
PASS testReplace(/x/, true); re.lastIndex is 3
PASS testReplace(/x/g, false) is "0y1y2"
PASS testReplace(/x/g, true) threw exception TypeError: Attempted to assign to readonly property..
PASS testReplace(/x/, false) is "0y1x2"
PASS testReplace(/x/, true) is "0y1x2"
PASS testReplace(/x/g, false); re.lastIndex is 0
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Attempted to assign to readonly property..
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: Attempted to assign to readonly property..
PASS testReplace(/x/, false) is "041x2"
PASS testReplace(/x/, true) threw exception TypeError: Attempted to assign to readonly property..
PASS testReplace(/x/g, false); re.lastIndex is 2
PASS testReplace(/x/g, true); re.lastIndex threw exception TypeError: Attempted to assign to readonly property..
PASS testReplace(/x/, false); re.lastIndex is 4
PASS testReplace(/x/, true); re.lastIndex threw exception TypeError: Attempted to assign to readonly property..
PASS try { testReplace(/x/g, false); throw 0; } catch (e) { }; replacerCalled; is true
PASS try { testReplace(/x/g, true); throw 0; } catch (e) { }; replacerCalled; is false
PASS successfullyParsed is true

TEST COMPLETE

