var str = 'Hey man :), how\'re you? :) My friend told me "this can\'t be true :)..." abc :) foo';
str = str.replace(/(:\))(?=(?:(?:[^"]*"){2})*[^"]*$)/g, ':D');
print("matched: " + str);
dmFyIHN0ciA9ICdIZXkgbWFuIDopLCBob3dcJ3JlIHlvdT8gOikgTXkgZnJpZW5kIHRvbGQgbWUgInRoaXMgY2FuXCd0IGJlIHRydWUgOikuLi4iIGFiYyA6KSBmb28nOwpzdHIgPSBzdHIucmVwbGFjZSgvKDpcKSkoPz0oPzooPzpbXiJdKiIpezJ9KSpbXiJdKiQpL2csICc6RCcpOwpwcmludCgibWF0Y2hlZDogIiArIHN0cik7