Вероятно, за последние 4 часа я прочитал более 20 различных вариантов этого вопроса без каких-либо положительных результатов.
Я пытаюсь подтвердить пароль с помощью регулярных выражений в приложении Oracle APEX, которое, к моемуДля понимания используется реализация регулярного выражения POSIX, которая, по-видимому, является более "строгим" движком, чем большинство версий регулярного выражения ???(Я еще не смог проверить это конкретно, но мое тестирование заставило бы меня поверить, что это правда)
В конечном итоге мне нужно подтвердить пароль, который:
- длиной от 14 до 18 символов
- Имеет как минимум 1 символ нижнего регистра
- Имеет как минимум 1 символ верхнего регистра
- Имеет не менее 1 цифры
- Имеетхотя бы 1 из следующих специальных символов # $ ^ + =! * () @% &
Я пробовал несколько выражений регулярных выражений, которые даже в их самой простой форме не работают в реализации Apex.
Например:
^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$
Теоретически следует принимать любую входную строку, если она имеет по крайней мере 1 цифру, 1 верхний регистр и 1 строчный символ.
Используя Javascript RegExp: тестер регулярных выражений , просто введя «wS1».Возвращает строку как совпадение.
Если я использую тот же RegExp для валидатора регулярных выражений и ввожу "wS1" в поле, проверка не пройдена.
Есть что-то, что яотсутствует в этой конкретной реализации регулярных выражений, о которых мне нужно знать?
РЕДАКТИРОВАТЬ
В конечном итоге я отказался от регулярных выражений из-за обширных возможностей проверки Apex.
Он имеет встроенную способность сказать что-то вроде: «Элемент в [expression1] должен содержать по крайней мере один из символов, перечисленных в [expression2]».К сожалению, это требует, чтобы я написал несколько проверок (сейчас мне до 6).
С другой стороны, это позволяет мне отображать несколько сообщений об ошибках, и, когда пользователь обновляет свой новый пароль, сообщения об ошибках удаляются, когда пользователь выполняет требование ....
В целомМне все еще кажется, что это хак, и мне все еще интересно узнать секрет, стоящий за регулярным выражением.