Обновление:
Этот вопрос был грандиозным провалом, но вот рабочее решение. Он основан на ответе Гамбо (Гамбо был близок к работе, поэтому я выбрал его в качестве принятого ответа):
Решение:
r'(?=[a-zA-Z0-9\-]{4,25}$)^[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*$'
Оригинальный вопрос (хотя и после 3-х правок)
Я использую Python и не пытаюсь извлечь значение , а скорее проверяю, чтобы убедиться, что оно соответствует шаблону.
допустимые значения:
spam123-spam-eggs-eggs1
spam123-eggs123
spam
1234
eggs123
Недопустимые значения:
eggs1-
-spam123
spam--spam
У меня просто не может быть тире в начале или в конце. Здесь есть вопрос , который работает в обратном направлении, получая строковое значение после факта, но мне просто нужно проверить значение, чтобы я мог его запретить. Кроме того, это может быть максимум 25 символов длиной , но минимум 4 символа длиной . Также никакие 2 черты не могут касаться друг друга .
Вот что я придумал после некоторых экспериментов с lookbehind и т. Д .:
# Nothing here