Вы действительно не можете.
я имею в виду, общая память между процессами... Вы собирающийся считать его, или нет. Если Вы не считаете его, Вы неправы; сумма использования памяти всех процессов не будет использованием общей памяти. При подсчете его Вы собираетесь считать его дважды - сумма, не собирающаяся быть корректной.
Меня, я доволен RSS. И знание Вас не может действительно полагаться на него полностью...
Используйте обратную ссылку и отрицательный просмотр вперед:
^(Dog|Cat|Bird|Mouse)(, (?!\1)(Dog|Cat|Bird|Mouse))*$
EDIT : Это не будет работать с такими случаями, как «Cat, Dog, Dog "... Вам нужно придумать гибридное решение для таких случаев - я не верю, что существует одно регулярное выражение, которое может с этим справиться.
Вот еще одна техника. Вам нужно проверить две вещи, во-первых, что он ДЕЙСТВИТЕЛЬНО соответствует этому:
(?:(?:^|, )(Dog|Cat|Bird|Mouse))+$
(Это просто немного более короткая версия вашего исходного регулярного выражения)
Затем проверьте, что оно НЕ соответствует этому:
(Dog|Cat|Bird|Mouse).+?\1
Например
var valid = string.match( /(?:(?:^|, )(Dog|Cat|Bird|Mouse))+$/ ) &&
!string.match( /(Dog|Cat|Bird|Mouse).+?\1/ );
JP, я попытался отредактировать ваш образец регулярного выражения, чтобы я мог искать дубликаты в любой строке, разделенной запятыми. . Примерно так:
var valid = string.match( /(?:(?:^|, )([a-z]*))+$/ ) &&
!string.match( /([a-z]*).+?\1/ );
К сожалению, не удалось. Со мной Сила слаба. ;)
Еще раз спасибо за вашу помощь.