Regex, чтобы убедиться, что одна из четырех букв появляется только один раз - PullRequest
0 голосов
/ 09 февраля 2019

Мне нужно регулярное выражение, чтобы разрешить только следующие буквы: «uldr», и каждое из них может появляться только один раз.Порядок, в котором они появляются, не имеет значения, просто разрешены только эти буквы, и они не могут повторяться.Например,

VALID:

uldr

u

ld

rdu

Недействительно:

uldrr

uu

ll

dd

drdd

Пока это то, что у меня есть: [uldr]{1,4} но этопозволяет персонажам повторяться.

1 Ответ

0 голосов
/ 09 февраля 2019

Ваше регулярное выражение [uldr]{1,4} будет ограничивать только разрешенные вами символы и ограничение длины.Кроме того, вы можете использовать отрицательный взгляд вперед, чтобы отвергать совпадения, в которых любой из персонажей повторяется, используя этот отрицательный взгляд вперед (?!.*(.).*\1), и вы можете использовать следующее модифицированное регулярное выражение:

^(?!.*(.).*\1)[uldr]{1,4}$

Demo1

Было бы более оптимизированное регулярное выражение, но немного менее читабельное, хотя.

^(?![uldr]*([uldr])[uldr]*\1)[uldr]{1,4}$

Demo2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...