Существует ли регулярное выражение для списка разделенных запятой значений дискретных значений?

Вы действительно не можете.

я имею в виду, общая память между процессами... Вы собирающийся считать его, или нет. Если Вы не считаете его, Вы неправы; сумма использования памяти всех процессов не будет использованием общей памяти. При подсчете его Вы собираетесь считать его дважды - сумма, не собирающаяся быть корректной.

Меня, я доволен RSS. И знание Вас не может действительно полагаться на него полностью...

6
задан Peter Boughton 18 October 2009 в 19:43
поделиться

2 ответа

Используйте обратную ссылку и отрицательный просмотр вперед:

^(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/ );
11
ответ дан 9 December 2019 в 22:36
поделиться

JP, я попытался отредактировать ваш образец регулярного выражения, чтобы я мог искать дубликаты в любой строке, разделенной запятыми. . Примерно так:

var valid = string.match( /(?:(?:^|, )([a-z]*))+$/ ) &&
    !string.match( /([a-z]*).+?\1/ );

К сожалению, не удалось. Со мной Сила слаба. ;)

Еще раз спасибо за вашу помощь.

0
ответ дан 9 December 2019 в 22:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: