Because you ar splitting on the question mark too. Without it:
var s = "Hello, how are you?";
var r = /([,\s]+)/;
console.log(s.split(r));
// including question mark in the split
// and empty values removed from the result
console.log(s.split(/([,\s]+|[?])/).filter(v => v.length));
?. If you use/([,\s]+)/instead, you'll get"you?"as the last element. If you don't want that either, manually remove the last element.