Ошибка регулярного выражения: «Недопустимое регулярное выражение» - PullRequest
0 голосов
/ 13 ноября 2018

Ниже приведена последняя версия используемого мной регулярного выражения, которое выдает ошибку «Недопустимое регулярное выражение».

XSD: регулярное выражение '^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{10,15}$' не удалось проверить в местоположении 4: это выражение не поддерживается в текущей настройке параметра.

Я получаю это исключение в своем xsd-файле и разрабатываю этот xsd в брокере сообщений (IIB). Может кто-нибудь помочь мне, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Похоже, вы хотите увидеть, содержит ли строка хотя бы заглавные буквы, строчные буквы, цифры, специальные символы и если длина строки составляет от 10 до 15 символов.

Как @Toto уже прокомментировал, я думаю, что ваш аромат не поддерживает прогноз.Вы можете сделать это без (я заимствовал и улучшил код из здесь ), используя группы захвата и протестировав их:

^
(?>                       #MAIN iteration (atomic only for efficiency)
    (?<upper>[A-Z])       #  an uppercase letter
  |                       # or
    (?<lower>[a-z])       #  a lowercase letter
  |                       # or
    (?<digit>[0-9])       #  a digit
  |                       # or
    (?<special>[^(0-9|a-z|A-Z)]) # a special
  |                      # or
    .                     #  anything else
){10,15}?                    #REPEATED 10 to 15 times
                          #
                          #CONDITIONS:
(?(upper)                 # 1. There must be at least 1 uppercase
    (?(lower)             #    2. If (1), there must be 1 lowercase
        (?(digit)         #       3. If (2), there must be 1 digit
            (?(special)   #           4. If (3) there must be 1 special   
              | (?!)      #          Else fail
            )             #
          | (?!)          #          Else fail
        )                 #
      | (?!)              #       Else fail
    )                     #
  | (?!)                  #    Else fail
) $                       #

Вы можете проверить это здесь: пример regex101

0 голосов
/ 13 ноября 2018

Escape all = символ:

Как при изменении = на \ =

...