It's possible that I didn't explain the issue correctly, but none of the provided answers accurately split the string or would be able to handle the large amount of data I will eventually be working with without timing out. Here's what did work for my case:
var str = 'value1,"value2,with,commas",value3';
var parts = str.split(/,(?=(?:[^"]*"[^"]*")*[^"]*$)/);