2015-11-25 2 views
-1

Я пытаюсь найти регулярное выражение, которое удовлетворяет строке, например X7O9 - 0qiL0, где количество символов между разделителем - составляет от 3 до 5 с каждой стороны.регулярное выражение для удовлетворения формы строки, например X7O9 - 0qiLA0 с определенным набором правил

Кроме того есть дополнительные правила, такие как:

1) иметь от 1 до 2 цифры на левой стороне
2) имеют 0 - 2 строчные буквы на правой стороне
3) имеют 1 или более верхний регистр буквы с левой стороны

Если возможно, учитывайте их случайные позиции внутри строки, то есть для правила № 3 прописная буква может быть первой, второй, третьей и т. д., если она находится с левой стороны будет обедать.

До сих пор я понял, как достичь своей базы правило 3 - 5 символов на каждой стороне сепаратора: (\w{3,5}) - (\w{3,5})

+0

Какова цель регулярного выражения? Вы просто ищете вещи, которые соответствуют, или вы действительно хотите анализировать ценности? – RPGillespie

+0

Может быть проще просто выполнить '(\ w {3,5}) - (\ w {3,5})', а затем потянуть каждую группу захвата и отправить их отдельным функциям проверки, то есть 'hasLowercase (2, word) 'или' hasUppercase (1, word) ' – RPGillespie

+0

@RPGillespie Я использую библиотеку js, которая генерирует случайную строку, которая удовлетворяет заданному регулярному выражению, поэтому я хочу сгенерировать ее из регулярного выражения, которое я пытаюсь выяснить выше – Ilja

ответ

1

Использование регулярных выражений, было бы:

^(?=\D*\d\D*\d?\D* -)(?=.*[A-Z].* -).{3,5} - (?=[^a-z]*[a-z]?[^a-z]*[a-z]?[^a-z]*).{3,5}$ 

Regex live here.