У вас нет взгляда назад (и у браузера есть проблемы в IE, поэтому лучше избегать этого). Но легко позволить этим «и» персонажам быть частью матча, а затем выбросить их:
var value= "hello,my,name,is,'mr jim'";
var match;
var r= /'[^'\s][^']*'|"[^"\s][^"]*"|[^'",\s]+/g;
while(match= r.exec(value)) {
var text= match[0];
if ('"\''.indexOf(text.charAt(0))!=-1) // starts with ' or "?
text= text.substring(1, text.length-1);
alert(text);
}
Или используйте круглые скобки, чтобы выделить кавычки из текста:
var r= /'([^'\s][^']*)'|"([^"\s][^"]*)"|([^'",\s]+)/g;
while (match= r.exec(value)) {
var text= match[1] || match[2] || match[3];
alert(text);
}
(Полагаю, ваш for(var z in match)
должен был зацикливаться на каждом совпадении с шаблоном в строке. К сожалению, JavaScript не так легко работает.)
Возможно, это не лучший способ разбить список через запятую; это выглядит немного нечетко для случаев, когда у вас есть пробел или кавычка в середине поля. Лучше всего было бы использовать простой синтаксический анализатор строк.