2016-08-01 3 views
-1

У меня есть следующее регулярное выражение:Regex - Обнаружение двух или более последовательных символов

^[A-Z]{2}[0-9A-Z]{1}([0-9A-Z_-]{0,38}[0-9A-Z]{1}){0,1}$ 

, которая подтверждает, что:

  • Строка имеет от 3 до 42 символов
  • только буквы, числа, - или _ могут использоваться
  • Первые две позиции - это буквы
  • Третий символ не может быть символом (_ или -)
  • Последний символ не может быть символом (_ или -)

мне нужно обновить регулярное выражение для определения строки, которые имеют одинаковые последовательные символы (-, __, - или -):

  • RR1_-1 (НЕ ДЕЙСТВУЕТ)
  • RR1___1 (НЕ ДЕЙСТВУЕТ)
  • RR1-1-1 (ДЕЙСТВИТЕЛЕН)

Я закончил:

^[A-Z]{2}[0-9A-Z]{1}([0-9A-Z_-]{0,38}(?!(--|__|-_|_-))[0-9A-Z]{1}){0,1}$ 

Но это не работает. Как определить два последовательных символа?

+0

Можете ли вы уточнить, что именно запрещено? –

ответ

0

Вы должны вставить отрицательное утверждение в начало строки сразу после начала строки, а не в середине шаблона. Впоследствии он должен работать, полагая, что остальная часть рисунка правильная.

Смежные вопросы