Regex для использования каждой буквы только однажды?

Действительно ли возможно создать регулярное выражение PCRE-стиля, которое будет только соответствовать каждой букве в списке только однажды?

Например, если у Вас есть буквы "lrsa", и Вы пытаетесь соответствовать списку слов против:

^[lrsa]*m[lrsa]*$

Вы собираетесь соответствовать (допустимым) "бегствам", но также и "ламы" (недопустимый в наших целях, потому что у Вас только был один). Если бы Ваш набор буквы был "lrsaa", то Вы хотели бы соответствовать "ламам".

Действительно ли это возможно с регулярными выражениями, или я должен обработать его программно?

5
задан gtcaz 13 April 2010 в 16:48
поделиться

1 ответ

Вы можете использовать негативный прогноз:

^(?!.*?(.).*?\1)[lrsa]*m[lrsa]*$

сделает то, что вы хотите

4
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

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