termina solo regulares regular para pagina numeros nombres expresiones expresion crear consecutivos con c# string razor passwords webmatrix

c# - solo - pagina para crear expresiones regulares



Comprobación de cadenas para una contraseña lo suficientemente fuerte (1)

Posible duplicado:
Fuerte contraseña regex
¿Necesita RegEx para la fuerza de la contraseña?

Me preguntaba cuál sería la mejor manera de buscar cadenas para ciertos criterios (la fortaleza de la contraseña sería específica).

Hasta ahora tengo un simple:

if(password.Length <= 7) { errorMessage = "Your password must be at least 8 characters."; }

Me gustaría poder consultar las letras mayúsculas, pero no estoy seguro de cuál es el método o procedimiento. He intentado con Google, buscando en el sitio web: http://msdn.microsoft.com , y buscando en el índice de mi C # book (C # Programming 3E, por Barbara Doyle), pero parece que no puedo encontrar ninguno.

Sé que podría probar esto ...

foreach(char c in password) { if(c!=''A'' || c!=''B'' || c!=''C'' || c!=''D'' ..... || c!=''Z'') { errorMessage = "Your password must contain at least one capital letter"; } }

... Pero eso sería extremadamente descuidado, y tendría que duplicarse para verificar al menos una letra minúscula. Estoy seguro de que hay una mejor manera de hacerlo, o al menos una forma abreviada del método que he mostrado anteriormente.

Además, puedo decidir verificar la contraseña para caracteres especiales (parece más fácil de hacer en el ejemplo anterior que con letras mayúsculas y minúsculas, así que puedo usar eso para caracteres especiales, si decidiera hacerlos necesarios). Si hay una manera fácil (o propia) de hacer eso, me encantaría tener ese conocimiento también.

De todos modos, muchas gracias por cualquier ayuda que alguien pueda dar.


No puedo tomar el crédito, ya que robé esto de aquí

using System.Text; using System.Text.RegularExpressions; public enum PasswordScore { Blank = 0, VeryWeak = 1, Weak = 2, Medium = 3, Strong = 4, VeryStrong = 5 } public class PasswordAdvisor { public static PasswordScore CheckStrength(string password) { int score = 0; if (password.Length < 1) return PasswordScore.Blank; if (password.Length < 4) return PasswordScore.VeryWeak; if (password.Length >= 8) score++; if (password.Length >= 12) score++; if (Regex.Match(password, @"//d+/", RegexOptions.ECMAScript).Success) score++; if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript).Success && Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success) score++; if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success) score++; return (PasswordScore)score; } }

Tenga en cuenta el uso de expresiones regulares para verificar caracteres en mayúscula. Esto parece ser un enfoque decente, ya que verifica la longitud, el uso de caracteres en mayúscula y minúscula, dígitos numéricos y caracteres especiales.

** Actualización **

Sé que la pregunta ahora está cerrada, pero puedo agregar más explicaciones para que VoidKing comprenda algunos de los conceptos.

Se devuelve un PasswordScore del método CheckStrength, que se puede usar como la condición de qué hacer a continuación en su código.

Aquí hay una demostración no probada de cómo se puede usar el código anterior:

String password = "MyDummy_Password"; // Substitute with the user input string PasswordScore passwordStrengthScore = PasswordAdvisor.CheckStrength(password); switch (passwordStrengthScore) { case PasswordScore.Blank: case PasswordScore.VeryWeak: case PasswordScore.Weak: // Show an error message to the user break; case PasswordScore.Medium: case PasswordScore.Strong: case PasswordScore.VeryStrong: // Password deemed strong enough, allow user to be added to database etc break; }

Enumeraciones se utilizan en este caso como un medio de clasificar la fuerza de la contraseña en grupos legibles por humanos. Mantiene el código limpio y hace obvio lo que está sucediendo en el código.

Con respecto al uso de Regex, si no está familiarizado con el concepto de ellos y cómo y cuándo usarlos, sugiero hacer algunas investigaciones, ya que pueden ser útiles en muchos escenarios diferentes para verificar patrones en cadenas. Quizás comience aquí .