validar solo saber regulares regular numeros letras expresiones expresion contiene cadenas c# string

saber - Verificando que una cadena contiene solo letras en C#



validar expresiones regulares c# (8)

Tengo una cadena de entrada y quiero verificar que contiene:

  • Solo letras o
  • Solo letras y números o
  • Solo letras, números o guiones bajos

Para aclarar, tengo 3 casos diferentes en el código, cada uno requiere una validación diferente. ¿Cuál es la forma más sencilla de lograr esto en C #?


Creo que es un buen caso para usar expresiones regulares:

public bool IsAlpha(string input) { return Regex.IsMatch(input, "^[a-zA-Z]+$"); } public bool IsAlphaNumeric(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9]+$"); } public bool IsAlphaNumericWithUnderscore(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9_]+$"); }


Itera a través de cadenas de caracteres y usa funciones de ''Char'' llamadas ''IsLetter'' y ''IsDigit''.

Si necesita algo más específico, use la clase Regex.


Para aquellos de ustedes que prefieren no ir con Regex y están en .NET 2.0 Framework (AKA no LINQ):

Solo cartas:

public static bool IsAllLetters(string s) { foreach (char c in s) { if (!Char.IsLetter(c)) return false; } return true; }

Sólo números:

public static bool IsAllDigits(string s) { foreach (char c in s) { if (!Char.IsDigit(c)) return false; } return true; }

Solo números o letras:

public static bool IsAllLettersOrDigits(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c)) return false; } return true; }

Solo números o letras o subrayados:

public static bool IsAllLettersOrDigitsOrUnderscores(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c) && c != ''_'') return false; } return true; }


Puede hacer un bucle en los caracteres de la cadena y verificar utilizando el Método de IsLetter pero también puede hacer un truco usando el método de cadena IndexOfAny para buscar otros caracteres que no se supone que estén en la cadena.


Si eres un novato, entonces puedes tomar la referencia de mi código ... ¡lo que hice fue poner un cheque para que solo pudiera obtener los alfabetos y los espacios en blanco! Puede repetir el ciclo for después de la segunda instrucción if para validar nuevamente la cadena

bool check = false; Console.WriteLine("Please Enter the Name"); name=Console.ReadLine(); for (int i = 0; i < name.Length; i++) { if (name[i]>=''a'' && name[i]<=''z'' || name[i]=='' '') { check = true; } else { check = false; } } if (check==false) { Console.WriteLine("Enter Valid Value"); name = Console.ReadLine(); }


Solo cartas:

Regex.IsMatch(input, @"^[a-zA-Z]+$");

Solo letras y números:

Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");

Solo letras, números y guiones bajos:

Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$");


Solo letras

Regex.IsMatch(theString, @"^[/p{L}]+$");

Letras y numeros:

Regex.IsMatch(theString, @"^[/p{L}/p{N}]+$");

Letras, números y guión bajo:

Regex.IsMatch(theString, @"^[/w]+$");

Tenga en cuenta que estos patrones también coinciden con los caracteres internacionales (en lugar de utilizar el constructo az ).


bool result = input.All(Char.IsLetter); bool result = input.All(Char.IsLetterOrDigit); bool result = input.All(c=>Char.IsLetterOrDigit(c) || c==''_'');