Я хочу регулярное выражение, чтобы проверить, что:
Пароль содержит не менее восьми символов, в том числе , по крайней мере один номер и включает в себя как нижний и заглавные буквы и специальные символы, например #
, ?
, !
.
Это не может быть ваш старый пароль или содержать ваше имя пользователя "password"
, или"websitename"
А вот мое проверочное выражение для восьми символов, включая одну заглавную букву, одну строчную букву и одну цифру или специальный символ.
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
Как я могу написать его, для пароля должно быть восемь символов, включая одну заглавную букву, один специальный символ и буквенно-цифровые символы ?
источник
Вы можете использовать это регулярное выражение с несколькими проверочными утверждениями (условиями) :
Это регулярное выражение будет применять эти правила:
(?=.*?[A-Z])
(?=.*?[a-z])
(?=.*?[0-9])
(?=.*?[#?!@$%^&*-])
.{8,}
(с якорями)источник
Регулярные выражения не имеют оператора AND, поэтому довольно сложно написать регулярное выражение, которое соответствует действительным паролям, когда валидность определяется чем-то И чем-то другим И чем-то еще ...
Но в регулярных выражениях есть оператор OR, поэтому просто примените теорему Деморгана и напишите регулярное выражение, соответствующее недействительным паролям:
Все , что с менее восьми символов ИЛИ ничего без каких - либо цифр ИЛИ ничего с не прописными буквами OR или что - либо без какого - либо строчного ИЛИ ничего без каких - либо специальных символов.
Так:
Если что-то соответствует этому, то это неверный пароль.
источник
|[a-zA-Z0-9]*
.Небольшое улучшение ответа @ anubhava: поскольку специальные символы ограничены теми, что на клавиатуре, используйте их для любых специальных символов:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
Это регулярное выражение будет применять эти правила:
источник
\W
соответствует только символам ASCII. Таким образом, вы не изменили это, и теперь вам нужно отфильтровать пробельные символы. Кроме того, все{1,}
добавленные вами круглые скобки и квантификаторы - чистый шум, и удаление?
операторов non-greedy ( ) было бессмысленным. Здесь нет никаких улучшений.У меня возникли трудности с поиском наиболее популярного ответа на мои обстоятельства. Например, моя проверка не удалась с такими символами, как
;
или[
. Меня не интересовал белый список моих специальных символов, поэтому я вместо этого использовал[^\w\s]
в качестве теста - проще говоря - сопоставления несловесных символов (включая числовые) и непробельных символов. Подводя итог, вот что сработало для меня ...8
персонажи1
числовой символ1
строчная буква1
заглавная буква1
спецсимволJSFiddle Link - простая демонстрация, охватывающая различные случаи
источник
(?=.*?[^\w\s])
с ,(?=.*?([^\w\s]|[_]))
чтобы добавить поддержку для подчеркивания и теперь он прекрасно работает. Также @ Dinish.net система, которую я использую, удаляет пробелы из строки пароля, когда мы ее получаем, поэтому использование метода vanilla JS String.prototype.trim () будет хорошо работать, если вы захотите использовать этот ответ.Более «универсальная» версия (?), Не допускающая использования английских букв в качестве специальных символов .
источник
Импортируйте файл JavaScript
jquery.validate.min.js
.Вы можете использовать этот метод:
источник
Попробуй это:
Выражение:
Необязательные специальные символы:
Выражение:
Если условие min и max не требуется, удалите
.{6, 16}
источник
Непосредственно не отвечая на вопрос, но действительно ли это должно быть регулярным выражением?
Я имел обыкновение делать много Perl, и привык к решению проблем с регулярными выражениями. Однако, когда они усложняются со всеми упущениями и прочими причудами, вам нужно написать десятки модульных тестов, чтобы убить все эти маленькие ошибки.
Кроме того, регулярное выражение обычно в несколько раз медленнее, чем императивное или функциональное решение.
Например, следующая (не очень FP) функция Scala решает исходный вопрос примерно в три раза быстрее, чем регулярное выражение самого популярного ответа. То, что он делает, также ясно, что вам вообще не нужен юнит-тест:
источник
Я бы ответил Петру Мортенсену, но мне не хватает репутации.
Его выражения идеально подходят для каждого из указанных минимальных требований. Проблема с его выражениями, которые не требуют специальных символов, состоит в том, что они также НЕ ДОПУСКАЮТ специальных символов, поэтому они также обеспечивают максимальные требования, которые, как я полагаю, не запрашивал OP. Обычно вы хотите, чтобы ваши пользователи делали свои пароли настолько надежными, насколько им хочется; зачем ограничивать надежные пароли?
Итак, его выражение «минимум восемь символов, хотя бы одна буква и одна цифра»:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
достигается минимальное требование, но остальные символы могут быть только буквой и цифрой. Чтобы разрешить (но не требовать) специальные символы, вы должны использовать что-то вроде:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
разрешить любые символыили
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
разрешить определенные специальные символыАналогично, «минимум восемь символов, как минимум одна заглавная буква, одна строчная буква и одна цифра:»
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
соответствует этому минимальному требованию, но допускает только буквы и цифры. Использование:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
разрешить любые символыили
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
разрешить определенные специальные символы.источник
источник
|{}:;<>/])[A-Za-z\d$@$!%*?&+~
| {}:; <> /] {8,15}, который будет включать следующие не буквенно-цифровые символы: (@ $!% *? & + ~ `| {}Как насчет рассмотрения следующего решения регулярных выражений:
^(?=.*[\w])(?=.*[\W])[\w\W]{8,}$
Что подтверждает следующее:
Проверьте это, работая по следующей ссылке https://regex101.com/r/qPmC06/4/
источник
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W\_])[A-Za-z\d\W\_]{8,}$
?В соответствии с вашими потребностями этот шаблон должен работать просто отлично. Попробуй это,
Просто создайте строковую переменную, назначьте шаблон и создайте логический метод, который возвращает true, если шаблон правильный, иначе false.
Образец:
источник
Я нашел много проблем здесь, поэтому я сделал свой собственный.
Вот он, во всей красе, с тестами:
https://regex101.com/r/DCRR65/4/tests
На что обращать внимание:
\w
потому что это включает в себя_
, что я проверяю.источник
источник
@ClasG уже предложил :
но он не принимает _ (подчеркивание) в качестве специального символа (например, Aa12345_).
Улучшенный это:
источник
Демо-версия:
источник
Тестирование этого в 2020 году:
Проверьте себя
источник
источник
Просто мы можем сделать это с помощью HTML5.
Используйте приведенный ниже код в атрибуте pattern,
Это будет работать отлично.
источник
Вы можете использовать шаблон регулярного выражения ниже, чтобы проверить пароль, соответствует ли он вашим ожиданиям или нет.
источник
Ссылка проверить онлайн https://regex101.com/r/mqGurh/1
источник
Использовать этот,
Он будет проверять как минимум одну строчную букву, одну заглавную букву, одно число и специальные символы (!, @, #, $,%,?, =, *, &).
Минимальная длина 8 и максимальная длина 20
источник
В Java / Android для проверки пароля, по крайней мере, с одним числом, одной буквой и одним специальным символом в следующем шаблоне:
источник
Попробуй это:
Это регулярное выражение работает для меня отлично.
источник
Шаблон, соответствующий как минимум 1 заглавным буквам, 1 цифре и любым специальным символам и длиной от 8 до 63.
"^ (? =. [az]) (? =. [AZ]) (? =. * \ d) [a-zA-Z \ d \ W] {8,63} $"
Этот шаблон был использован для программирования JAVA.
источник
Надеюсь, что ниже работает. Я пробовал это в пользовательской политике Azure.
^ (? =. [az]) (? =. [AZ]) (? =. \ d) (? =. [@ # $% ^ & * -_ + = [] {} | \: ',? /
~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~ "() ;!] |. (?! @)) {6,16} $источник
На самом деле, я просто скопировал первый ответ здесь и превратил его в более удобное для пользователя регулярное выражение, которому нужен один верхний, один нижний и как минимум 8 символов, но он принимает все «между».
Это пример-регулярное выражение, которое требует
ВАЖНО : Это регулярное выражение также будет исключать все остальные символы, например цифры, специальные символы, такие как $, # ,! и т.д. - до тех пор, пока правила 1. до 3. соответствуют входной строке
Следите за "." почти в конце регулярного выражения Это будет соответствовать практически любому (и любому другому читаемому) персонажу
источник
Если вы хотите использовать регулярные выражения для проверки не менее восьми символов, как минимум одной заглавной буквы, хотя бы одной строчной буквы, хотя бы одного числа от 0 до 9 и хотя бы одного специального символа из:! @ # $% ^ & * _? И также дать пользователю немного больше информации о том, чего ему не хватает в пароле, вы можете использовать следующий код:
источник
Решение, которое я нашел в одном из предыдущих ответов:
* Минимум 8 символов, минимум 1 заглавный алфавит, 1 строчный алфавит, 1 цифра и 1 специальный символ:
... не работает для меня, но следующее является упрощенной версией и прекрасно работает (добавьте любой понравившийся вам специальный символ, я добавил # здесь), и добавьте правило чисел, как вы делаете с буквами как:
источник