Como criar uma senha forte. Como criar uma senha forte Crie uma senha de 8 caracteres e latim

Eu preciso de expressão regular para verificar isso:

A senha contém pelo menos oito caracteres, incluindo pelo menos um número, e inclui letras minúsculas e maiúsculas e caracteres especiais como #, ? , ! .

Isso não pode ser seu Senha Antiga ou contenha seu nome de usuário, "senha" ou "nome do site"

Aqui está minha expressão de validação, que contém oito caracteres, incluindo uma letra maiúscula, uma letra minúscula e um número ou caractere especial.

(?=^.(8,)$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*)(?=.* ).*$"

Como posso escrever para que a senha tenha oito caracteres, incluindo uma letra maiúscula, um caractere especial e caracteres alfanuméricos?

regex javascript asp.net

24 respostas


877

Mínimo oito caracteres, pelo menos uma letra e um número:

"^(?=.*)(?=.*\d)(8,)$"

Um mínimo de oito caracteres, pelo menos uma letra, um número e um caractere especial:

"^(?=.*)(?=.*\d)(?=.*[@$!%*#?&])(8,)$"

Um mínimo de oito caracteres, pelo menos uma letra maiúscula, uma letra minúscula e um número:

"^(?=.*)(?=.*)(?=.*\d)(8,)$"

Mínimo de oito caracteres, pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial:

"^(?=.*)(?=.*)(?=.*\d)(?=.*[@$!%*?&])(8,)$"

No mínimo oito e no máximo 10 caracteres, com pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial:

"^(?=.*)(?=.*)(?=.*\d)(?=.*[@$!%*?&])(8,10)$"


53

Expressões regulares não possuem um operador AND, então é muito difícil escrever uma regex que corresponda a senhas válidas quando a realidade é definida por algo AND, outra coisa AND, outra coisa...

Mas expressões regulares têm um operador OR, então basta aplicar o teorema de DeMorgan e escrever uma regex que corresponda a senhas inválidas:

Qualquer coisa com menos de oito caracteres OU qualquer coisa que não contenha números OU qualquer coisa que não contenha letras maiúsculas OU ou qualquer coisa que não contenha letras minúsculas OU qualquer coisa que não contenha caracteres especiais.

^(.(0,7)|[^0-9]*|[^A-Z]*|[^a-z]*|*)$

Se alguma coisa corresponder a isso, então é uma senha inválida.


29

Apenas uma pequena melhoria na resposta de @anubhava: como os caracteres especiais são limitados aos do teclado, use isto para qualquer caractere especial:

^(?=.*?)(?=(.*)(1,))(?=(.*[\d])(1,))(?=(.*[\W])(1, ))(?!.*\s).(8,)$

Este regex irá impor estas regras:

  • Pelo menos uma letra maiúscula em inglês
  • Pelo menos uma letra minúscula em inglês
  • Pelo menos um numero
  • Pelo menos um caractere especial
  • Mínimo oito de comprimento


20

Tive alguma dificuldade em seguir a resposta mais popular para as minhas circunstâncias. Por exemplo, meu teste falhou com caracteres como; ou [ . Eu não estava interessado em colocar meus caracteres especiais na lista de permissões, então usei [^\w\s] como um teste - simplesmente - combinando caracteres que não sejam de palavras (incluindo numéricos) e caracteres que não sejam de espaço. Para resumir, aqui está o que funcionou para mim ...

  • pelo menos 8 caracteres
  • pelo menos 1 caractere numérico
  • pelo menos 1 letra minúscula
  • pelo menos 1 letra maiúscula
  • pelo menos 1 caractere especial
/^(?=.*?)(?=.*?)(?=.*?)(?=.*?[^\w\s]).(8,)$/ ^(?=\S *)(?=\S*)(?=\S*\d)(?=\S*[^\w\s])\S(8,)$

mas não aceita _(sublinhado) como caractere especial (por exemplo, Aa12345_).

Melhorado:

^(?=\S*)(?=\S*)(?=\S*\d)(?=\S*([^\w\s]|[_]))\S(8,) $


2

Encontrei muitos problemas aqui, então criei os meus.

Aqui está em toda a sua glória, com testes:

^(?=.*)(?=.*)(?=.*\d)(?=.*([^a-zA-Z\d\s])).(9,)$

Algo para prestar atenção:

  1. não usa \w porque inclui _ que estou testando.
  2. Eu estava tendo muitos problemas para combinar caracteres sem combinar o final da string.
  3. Não especifica caracteres especificamente, isso também ocorre porque localidades diferentes podem ter caracteres diferentes em seus teclados que eles podem querer usar.


1

Podemos simplesmente fazer isso usando HTML5.

Use o código abaixo no atributo padrão,

Padrão="(?=^.(8,)$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*)(?= .*).*$"

Funcionará perfeitamente.


1

Você pode usar o padrão de expressão regular abaixo para verificar se a senha corresponde às suas expectativas ou não.

((?=.*\\d)(?=.*)(?=.*)(?=.*[~!@#$%^&*()]).(8,20))


1

Use o seguinte Regex para satisfazer as seguintes condições:

Condições: 1] Min 1 caractere especial. 2] Número mínimo 1. 3] Mínimo de 8 caracteres ou mais

Regex: ^(?=.*\d)(?=.*[#$@!%&*?])(8,)$


0

Em Java/Android, verifique a senha com pelo menos um número, uma letra, um caractere especial de acordo com o seguinte esquema:

"^(?=.*)(?=.*\\d)(?=.*[$@$!%*#?&])(8,)$"


0

Experimente isto:

^.*(?=.{8,})(?=.*)(?=.*)(?=.*[@#$%^&+=])*$

Este regex funciona perfeitamente para mim.

Função minhaFunção() ( var str = "c1TTTTaTTT@"; var patt = new RegExp("^.*(?=.(8,))(?=.*)(?=.*)(?=.*[ @#$%^&+=])*$"); var res = patt.test(str); console.log("As correspondências são regulares:", res); )


0

Espero que o abaixo funcione. Tentei isso em uma política personalizada do Azure.

^(?=. ) (?=. ) (?=. \d)(?=. [@#$%^&*-_+={}|\:",?/ ~"();!])({}|\\:",?/ ~"();!]|.(?!@)){6,16}$


-1

A solução que encontrei em uma das respostas anteriores é como:

Mínimo de 8 caracteres mínimo 1 alfabeto maiúsculo, 1 alfabeto minúsculo, 1 número e 1 caractere especial: "^(?=. ) (?=. ) (?=. \d)(?=. [$@$!% ?&]){8 ,}" ..

.

isso não funcionou para mim, mas o seguinte é uma versão simplificada e funciona muito bem (adicione qualquer caractere especial que você quiser, adicionei # aqui) e também adicione uma regra numérica como você faz com letras como:

"^(?=.*)(?=.*)(?=.*)(?=.*[$@$!%*?&]){8,}"


Verificação de senha Regex usando operador condicional Java

Eu sou novo em regex. Basicamente preciso verificar a senha em Java para o seguinte requisito: A senha deve conter pelo menos seis caracteres. A senha não pode conter mais de 20 caracteres. Para...


regex permite apenas letras, números, pontos, sublinhados, travessões. no mínimo 5 caractéres

Como fazer com que o regex se ajuste abaixo das regras permitem apenas letras (maiúsculas ou minúsculas), números, pontos, sublinhados, travessões pelo menos 5 caracteres não podem conter termos comuns ou extensões...


Regex para "proibir caracteres especiais ou espaços", mas "permitir números e letras" maiúsculas "OU" minúsculas ""

Já utilizo essa regex: ^(6,)$ ela permite: números, letras maiúsculas, letras minúsculas. proíbe: espaços e caracteres ou símbolos especiais. Mas quero mudar para: - permitir:...


Expressão regular para senha

Preciso de ajuda para criar uma senha regex. A senha deve conter no mínimo 4 caracteres, letras (maiúsculas e minúsculas), números e caracteres especiais – sem espaços. MSN como expressão regular.


Regex para uma combinação de determinadas regras

Estou tentando escrever um regex para verificar a senha de uma determinada regra. As senhas devem ter pelo menos 8 caracteres e conter pelo menos 3 dos 4 tipos de caracteres a seguir: letras minúsculas (por exemplo...


Um regex para verificação abrangente de senha

Tenho que verificar a senha para ter certeza de que seguem estas regras A) A senha deve conter caracteres de 3 das 4 classes a seguir: Letras maiúsculas em inglês A, B, C, ... Z Letras minúsculas em inglês...


A senha Regex deve conter pelo menos 8 caracteres, pelo menos 1 número, letras e caracteres especiais

Preciso de uma expressão regular que deve ter pelo menos um caractere numérico, letras maiúsculas e minúsculas são permitidas, caracteres especiais também são permitidos. Estou usando isso...


Regex para senha com pelo menos 6 caracteres

Preciso de uma regex para verificar a senha com as condições abaixo Comprimento de pelo menos 6 caracteres Deve conter pelo menos 1 letra Deve conter pelo menos 1 número Se a senha contiver caracteres especiais...


Às vezes o padrão combinava e às vezes não.

Implementei o padrão em angular 5 com o seguinte código em um arquivo field.ts para validar a senha. Isto deve ser feito - suporte para um mínimo de oito caracteres, pelo menos uma letra maiúscula, uma...


regex para senhas com pelo menos 8 caracteres, maiúsculas, minúsculas, números, caracteres especiais e não repetitivos?

Olá, quero encontrar uma expressão regular que satisfaça essas condições. (1) as senhas devem ter pelo menos 8 caracteres (2) devem conter pelo menos letras maiúsculas, minúsculas, números e...

12345 - precisamos alterar a senha. Como criar uma senha complexa e lembrá-la para sempre

Os golpistas da Internet roubam milhões de senhas de caixas de correio e contas de usuários todos os dias. Mas não se desespere - daremos algumas dicas muito simples, mas eficazes, que o protegerão de perder o controle sobre seus recursos.

Para quem preferir assistir, preparamos uma versão em vídeo deste artigo:



1. Use senhas fortes

Você adivinhou, certo? Desculpe pela banalidade, mas este é o conselho principal - que a maioria dos usuários ainda negligencia. Não é de admirar que senhas como qwerty permaneçam entre as mais populares até hoje.

Não utilize como senha o nome de seus personagens favoritos, o nome de um clube de futebol ou o nome de um animal de estimação, pois essas informações podem ser facilmente encontradas em suas redes sociais. Uma senha complexa deve consistir em uma combinação aleatória de vários caracteres e símbolos.

2. Use letras maiúsculas e minúsculas, números e símbolos

, os usuários não gostam de senhas longas - elas são fáceis de esquecer e têm preguiça de digitar. Uma senha de 8 caracteres era considerada segura apenas nos primórdios dos computadores; Hoje, uma combinação de oito dígitos é selecionada mecanicamente em algumas horas.

No entanto, mesmo uma senha curta (até 8 caracteres) pode se tornar relativamente segura se você usar números e letras em casos diferentes. A seleção dessa senha levará de 2 a 3 dias.

A segurança máxima é alcançada simplesmente aumentando o comprimento da senha e usando caracteres diferentes ($,%, &, '', #) nos serviços onde isso é possível.

3. Use siglas

Escolha uma frase que você sabe que não esquecerá e use uma combinação das primeiras letras de cada palavra como senha. Por exemplo, o poema de 1828 “Em Lukomorye há um carvalho verde, uma corrente de ouro no carvalho...” se transforma em ULdzzcndt1828.




4. Use com palavra-chave

Escolha uma palavra-chave e misture-a com o nome de cada site em que você possui uma conta. Por exemplo, para palavra-chave A senha do “antivírus” no site ficará assim: c a eu n você t b eu e vé eu e R t você n é od32. A vantagem deste truque é que você terá senha forte para cada site.

Conforme sugerido nos comentários, este método pode falhar se o endereço do site mudar - porém, neste caso basta utilizar a recuperação automática de senha.

5. Não use a mesma senha para contas diferentes

Como um verdadeiro artista, seja original. Lembre-se de que sites diferentes possuem níveis de segurança diferentes. Por exemplo, a maioria dos serviços envia senhas via e-mail através do procedimento de recuperação de senha. Tendo obtido uma senha de um serviço inseguro, os hackers podem tentar usá-la para seu e-mail ou redes sociais - a mesma senha se tornará a chave para todos os seus recursos.

Os riscos só podem ser reduzidos com o uso de senhas exclusivas e complexas para todas as contas.

6. Altere as senhas com mais frequência

No caso do roubo de senhas do Mail.ru, 99,982% de todas as senhas revelaram-se irrelevantes. Isto deveu-se em grande parte ao facto de a maior parte da base de dados de contas roubadas ter sido compilada a partir de uma série de outras bases de dados.

No entanto, no caso de 57 milhões de endereços (é exatamente quantos registros estavam no banco de dados vazado), isso não é suficiente - você pode garantir que sua caixa de correio Mail.Ru não será comprometida por invasores? Além disso, este é apenas um exemplo de banco de dados vazado - não sabemos quantos milhões de endereços atuais estão nas mãos de hackers hoje.

Mas sabemos com certeza que haveria muito menos deles se os usuários alterassem regularmente suas senhas.




7. Use um gerenciador de senhas

Como não esquecer sua senha conta Em contato com, caixa de correio e serviços bancários pela Internet? Poucas pessoas conseguem lembrar dezenas de senhas complexas. Isto é bom.

Felizmente, os desenvolvedores Programas surgiu com uma solução. Hoje, existem muitas ferramentas que ajudam os usuários a armazenar com segurança um número ilimitado das senhas mais complexas. Por exemplo, você pode usar os mais populares - LastPass ou 1Password.

No entanto, os gerenciadores de senhas têm seus pontos fracos. As contas mais importantes que podem acessar suas informações bancárias não devem ser confiáveis, mesmo para os programas mais confiáveis.

8. Não se esqueça da “pergunta secreta”

Na dica nº 1, recomendamos não usar como senha informações que possam ser facilmente descobertas sobre você em redes sociais. O mesmo se aplica às “questões secretas”, das quais muitos, por algum motivo, esquecem ou não lhes dão importância. Além disso, os invasores podem selecionar facilmente uma resposta em um banco de dados de opções populares.

Tente usar táticas absurdas quando a resposta não tiver nada a ver com pergunta secreta. Nome de solteira da mãe? Aspirina! Nome do animal de estimação? 1989!

9. Use autenticação de dois fatores

Para minimizar o risco de vazamento de credenciais, use a autenticação de dois fatores sempre que possível.

A maioria das redes sociais, serviços postais e bancários permitem ativar a confirmação de autorização via SMS. Dessa forma, os golpistas não conseguirão acessar sua conta, a menos que tenham seu celular em mãos.

Portanto, se você possui uma conta no Yandex, recomendamos usar a função de autenticação de dois fatores Yandex.Key:

  • Baixe o aplicativo para Android ou iOS
  • Digite sua senha ou código QR
  • Faça login no Yandex
  • Lucro!
P.S. Imprima e salve os códigos de recuperação caso seu smartphone falhe ou seja perdido.


10. Antivírus é tudo para nós

As senhas não chegam apenas aos hackers, elas não flutuam até eles pelo ar (exceto pela fraude usual quando os próprios usuários informam aos criminosos as senhas de seus serviços).

Os dados pessoais são coletados e enviados a hackers de maneira muito específica malware, que por bem ou por mal estão tentando entrar no seu PC, laptop ou smartphone.

Portanto coloque antivírus confiável s (e atualizar regularmente o banco de dados) é uma das principais maneiras de economizar dinheiro, nervosismo e privacidade.

Requisitos obrigatórios para uma senha forte

A senha não deve conter

  • Informações pessoais fáceis de descobrir. Por exemplo: nome, sobrenome ou data de nascimento.
  • Óbvio e palavras simples, frases, expressões definidas e conjuntos de caracteres fáceis de entender. Por exemplo: senha, liberdade condicional, abcd, qwerty ou asdfg, 1234567.

Métodos de geração de senha

  • Crie um algoritmo para criar senhas.
    Por exemplo, tome como base seu poema ou ditado favorito. Escreva em letras latinas minúsculas e maiúsculas e substitua algumas delas por números ou símbolos semelhantes: I_p0Mn|O_4y9n0e Mg№vEn|E (lembro-me de um momento maravilhoso).
  • Use um gerador de senha.
    Com o Kaspersky Password Manager, você pode gerar senhas complexas, verificar sua força e armazená-las com segurança. Você também pode instalar no seu navegador Extensão Kaspersky Gerenciador de senhas para preenchimento automático de campos de entrada de dados em sites.

Com que frequência alterar sua senha

Proteção de senha

  • Não compartilhe nem envie suas senhas para ninguém.
  • Não deixe senhas escritas em papel em local acessível.
  • Use um gerenciador de senhas ou o armazenamento de senhas integrado do seu navegador.
  • Use senhas diferentes para suas contas. Se você usar as mesmas senhas e um invasor descobrir a senha de uma conta, ele poderá obter acesso a todas as outras.


A expressão regular para a senha deve conter pelo menos oito caracteres, pelo menos um número e letras maiúsculas e minúsculas e caracteres especiais (15)

Use o seguinte Regex para satisfazer as seguintes condições:

Condições: 1] Min 1 caractere especial. 2] Número mínimo 1. 3] Mínimo de 8 caracteres ou mais

Regex: ^(?=.*\d)(?=.*[#$@!%&*?])(8,)$

Pode testar online: https://regex101.com

Quero que o regex verifique isso:

A senha tem pelo menos oito caracteres, incluindo pelo menos um número, e inclui letras minúsculas e maiúsculas e caracteres especiais como # ? , ! ,

Não pode ser sua senha antiga ou conter seu nome de usuário, “senha” ou “nome do site”

E aqui está minha expressão de validação, que contém oito caracteres, incluindo uma letra maiúscula, uma letra minúscula e um número ou caractere especial.

(?=^.(8,)$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*)(?=.* ).*$"

Como posso escrevê-lo para uma senha que deve ter oito caracteres, incluindo uma letra maiúscula, um caractere especial e caracteres alfanuméricos?

@ClasG já sugeriu:

^(?=\S*)(?=\S*)(?=\S*\d)(?=\S*[^\w\s])\S(8,)$

mas não aceita _ (sublinhado) como caractere especial (por exemplo, Aa12345_).

Melhorou:

^(?=\S*)(?=\S*)(?=\S*\d)(?=\S*([^\w\s]|[_]))\S(8,) $

Em Java/Android, para verificar uma senha com pelo menos um número, uma letra, um caractere especial no seguinte padrão:

"^(?=.*)(?=.*\\d)(?=.*[$@$!%*#?&])(8,)$"

De acordo com sua necessidade, este modelo deve funcionar bem. Tente,

^(?=(.*\d)(1))(.*\S)(?=.*)(8,)

Basta criar uma variável string, atribuir um modelo e criar um método booleano que retorne verdadeiro se o modelo estiver correto, caso contrário, falso.

Padrão de string = "^(?=(.*\d)(1))(.*\S)(?=.*)(8,)"; String password_string = "Digite a senha aqui" private boolean isValidPassword(String password_string) ( return password_string.matches(Constants.passwordPattern); )

Importar Arquivo JavaScript jquery.validate.min.js .

Você pode usar este método:

$.validator.addMethod("pwcheck", função (valor) ( ​​return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(valor ) && //.teste(valor) && //.teste(valor) && //.teste(valor) ));

  1. Pelo menos uma letra em inglês em maiúscula
  2. Pelo menos uma letra minúscula em inglês
  3. Pelo menos um dígito
  4. Pelo menos um caractere especial

Espero que o abaixo funcione. Tentei isso em uma política personalizada do Azure.

(? =. ) (? =. ) (? =. \d)(?=. [@ # $% ^ & * -_ + = {} | \: ",? / ~"();!])({}|\\:",?/ ~" (); ] |. (?! @)) {6,16} $

Não respondendo diretamente à pergunta, mas realmente precisa ser uma expressão regular?

Usei muito Perl e estou acostumado a resolver problemas com expressões regulares. No entanto, quando eles ficam mais complexos com toda a aparência e outras peculiaridades, você precisa escrever dezenas de testes unitários para eliminar todos esses pequenos bugs.

Além disso, uma expressão regular geralmente é várias vezes mais lenta que uma solução imperativa ou funcional.

Por exemplo, a seguinte função Scala (não muito FP) resolve a questão original cerca de três vezes mais rápido que o regex da resposta mais popular. O que ele faz também é tão claro que você não precisa de um teste unitário:

Def validarPassword (senha: String): Boolean = ( if (password.length< 8) return false var lower = false var upper = false var numbers = false var special = false password.foreach { c =>if (c.isDigit) números = verdadeiro senão if (c.isLower) inferior = verdadeiro senão if (c.isUpper) superior = verdadeiro senão especial = verdadeiro ) inferior && superior && números && especial )

Tente:

^.*(?=.{8,})(?=.*)(?=.*)(?=.*[@#$%^&+=])*$

Este regex funciona muito bem para mim.

Função minhaFunção() ( var str = "c1TTTTaTTT@"; var patt = new RegExp("^.*(?=.(8,))(?=.*)(?=.*)(?=.*[ @#$%^&+=])*$"); var res = patt.test(str); console.log("As correspondências são regulares:", res); )

Podemos simplesmente fazer isso usando HTML5.

Use o código abaixo no atributo do modelo,

Padrão="(?=^.(8,)$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*)(?= .*).*$"

Funcionará muito bem.

Expressões regulares não possuem um operador AND, então é muito difícil escrever uma expressão regular que corresponda a senhas válidas quando a realidade é definida por algo E outra coisa E outra coisa...

Mas as expressões regulares têm um operador OR, então basta aplicar o teorema de DeMorgan e escrever uma expressão regular que corresponda a senhas inválidas:

Qualquer coisa com menos de oito caracteres OU qualquer coisa sem números OU nada além de capitais OU OU nada, sem letras minúsculas OU nada além de caracteres especiais.

^(.(0,7)|[^0-9]*|[^A-Z]*|[^a-z]*|*)$

Se alguma coisa corresponder a isso, então é uma senha inválida.

A solução que encontrei em uma das respostas anteriores:

Mínimo 8 caracteres, pelo menos 1 alfabeto, 1 alfabeto minúsculo, 1 número e 1 caractere especial: "^ (? =. ) (? =. ) (? =. \D)(?=. [ $ @ $!% ? &]) {8,} "

Não funciona para mim, mas o seguinte é uma versão simplificada e funciona muito bem (adicione qualquer caractere especial que desejar, adicionei # aqui) e adicione a regra numérica da mesma forma que fez com as letras:

"^(?=.*)(?=.*)(?=.*)(?=.*[$@$!%*?&]){8,}"

Eu responderia a Peter Mortensen, mas não tenho reputação suficiente.

Suas expressões são ideais para cada um dos requisitos mínimos especificados. O problema com suas expressões que não requerem caracteres especiais é que elas também não possuem caracteres especiais e também fornecem requisitos máximos, o que não acredito que o OP esteja solicitando. Normalmente você deseja que seus usuários tornem suas senhas tão fortes quanto desejarem; Por que restringir senhas fortes?

Então, são "pelo menos oito caracteres, pelo menos uma letra e um número":

^(?=.*)(?=.*\d)(8,)$

atinge o requisito mínimo, mas os caracteres restantes podem ser apenas letras e números. Para permitir (mas não exigir) caracteres especiais, você deve usar algo como:

^(?=.*)(?=.*\d).(8,)$ para permitir qualquer caractere

^(?=.*)(?=.*\d)(8,)$ para permitir caracteres especiais especiais

Da mesma forma, "um mínimo de oito caracteres, pelo menos uma letra maiúscula, uma letra minúscula e um número:

^(?=.*)(?=.*)(?=.*\d)(8,)$

atende a esse requisito mínimo, mas permite apenas letras e números. Uso:

^(?=.*)(?=.*)(?=.*\d).(8,)$ para permitir qualquer caractere

^(?=.*)(?=.*)(?=.*\d)(8,) para permitir caracteres especiais especiais.

Use o seguinte Regex para satisfazer as condições abaixo: Condições: 1] Mínimo 1 letra maiúscula. 2] Mínimo 1 letra minúscula. 3] Min 1 caractere especial. 4] Número mínimo 1. 5] Mínimo 8 caracteres. 6] Máximo de 30 caracteres. Regex: /^(?=.*)(?=.*)(?=.*\d)(?=.*[#$@!%&*?])(8.30)$/

263 Swapnil Tatkondawar

Quero que o regex verifique isso:

A senha tem pelo menos oito caracteres, incluindo pelo menos um número, e inclui letras minúsculas e maiúsculas e caracteres especiais como #, ? , ! .

Esta não pode ser sua senha antiga nem conter seu nome de usuário, "senha" ou "nome do site"

E aqui está minha expressão de validação, que contém oito caracteres, incluindo uma letra maiúscula, uma letra minúscula e um número ou caractere especial.

(?=^.(8,)$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*)(?=.* ).*$"

Como posso escrever, a senha deve conter oito caracteres incluindo uma letra maiúscula, um caractere especial e caracteres alfanuméricos?

javascript regex asp.net

24 respostas

Mínimo oito caracteres, pelo menos uma letra e um número:

"^(?=.*)(?=.*\d)(8,)$"

Um mínimo de oito caracteres, pelo menos uma letra, um número e um caractere especial:

"^(?=.*)(?=.*\d)(?=.*[@$!%*#?&]) $!%*#?&]{8,}$"

Um mínimo de oito caracteres, pelo menos uma letra maiúscula, uma letra minúscula e um número:

"^(?=.*)(?=.*)(?=.*\d)(8,)$"

Mínimo de oito caracteres, pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial:

$!%*?&]{8,}$"

No mínimo oito e no máximo 10 caracteres, com pelo menos uma letra maiúscula, uma letra minúscula, um número e um caractere especial:

"^(?=.*)(?=.*)(?=.*\d)(?=.*[@$!%*?&]) $!%*?&]{8,10}$"

Expressões regulares não possuem um operador AND, então é muito difícil escrever uma expressão regular que corresponda a senhas válidas quando a realidade é definida por algo E outra coisa E outra coisa...

Mas as expressões regulares têm um operador OR, então basta aplicar o teorema de DeMorgan e escrever uma expressão regular que corresponda a senhas inválidas:

Qualquer coisa com menos de oito caracteres OU nada, nenhum número OU, sem letras maiúsculas OU ou nada além de letras minúsculas OU qualquer coisa que não tenha caracteres especiais.

^(.(0,7)|[^0-9]*|[^A-Z]*|[^a-z]*|*)$

Se alguma coisa corresponder a isso, é uma senha inválida.

Apenas uma pequena melhoria na resposta de @anubhava: como o caractere especial é limitado aos do teclado, use-o para qualquer caractere especial:

^(?=.*?)(?=(.*)(1,))(?=(.*[\d])(1,))(?=(.*[\W])(1, ))(?!.*\s).(8,)$

Esta expressão regular seguirá as seguintes regras:

  • Pelo menos uma letra maiúscula em inglês
  • Pelo menos uma letra minúscula em inglês
  • Pelo menos um dígito
  • Pelo menos um caractere especial
  • Mínimo oito de comprimento

Estou tendo dificuldade em seguir as respostas mais populares às minhas circunstâncias. Por exemplo, meu cheque não funcionou com personagens como; ou [ . Eu não estava interessado em colocar meus caracteres especiais na lista de permissões, então usei [^\w\s] como um teste - basta colocar - combinar caracteres que não sejam palavras (incluindo numéricos) e sem espaços. Para resumir, aqui está o que funcionou para mim ...

  • pelo menos 8 caracteres
  • pelo menos 1 caractere numérico
  • pelo menos 1 letra minúscula
  • pelo menos 1 letra maiúscula
  • pelo menos 1 caractere especial
/^(?=.*?)(?=.*?)(?=.*?)(?=.*?[^\w\s]).(8,)$/

Eu responderia a Peter Mortensen, mas não tenho reputação.

Suas expressões são ideais para cada um dos requisitos mínimos especificados. O problema com suas expressões que não requerem caracteres especiais é que elas também NÃO PERMITEM caracteres especiais, portanto também fornecem requisitos máximos, que acredito que o OP não solicitou. Normalmente, você deseja que seus usuários tornem suas senhas tão fortes quanto desejarem; Por que restringir senhas fortes?

Portanto, sua expressão é “pelo menos oito caracteres, pelo menos uma letra e um número”:

^(?=.*)(?=.*\d)(8,)$

alcançou requerimento mínimo, mas outros caracteres só podem ser letras e números. Para permitir (mas não exigir) caracteres especiais, você deve usar algo como:

^(?=.*)(?=.*\d).(8,)$ para permitir qualquer caractere

^(?=\S*)(?=\S*)(?=\S*\d)(?=\S*[^\w\s])\S(8,)$

mas não aceita _ (sublinhado) como caractere especial (por exemplo, Aa12345_).

Melhorado é:

^(?=\S*)(?=\S*)(?=\S*\d)(?=\S*([^\w\s]|[_]))\S(8,) $

Use a seguinte expressão regular para satisfazer as seguintes condições:

Condições: 1] Min 1 caractere especial. 2] Número mínimo 1. 3] Mínimo de 8 caracteres ou mais

gastroguru 2017