usando expresiones regulares para validar el formato de entrada en C#

Esta es una pregunta súper básica (hoy estoy con muerte cerebral):

¿Cómo valido la entrada usando expresiones regulares, para ver: 1) si la entrada está en una forma determinada 2) si la entrada está en mayúsculas (simplemente convertir la entrada en mayúsculas no es factible para esto)

No quiero asegurarme de que mis entradas tengan el formato XX_XX. Aquí isi lo que tengo:

public bool IsKosher(string input)
{
    Regex r = new Regex(input);
    if(r.Matches([A-Z]_[A-Z]))
    {
        return true;
    }
    return false;     
}

¿Alguna idea de por qué no está compilando?

¡Gracias!

preguntado el 22 de mayo de 12 a las 20:05

4 Respuestas

Le faltan comillas dobles, coloca parámetros en lugares incorrectos y no necesita un if declaración:

public bool IsKosher(string input) {
    return Regex.IsMatch(input, "[A-Z]{2}_[A-Z]{2}");
}

contestado el 22 de mayo de 12 a las 20:05

¿Citas? ¿Falta un paréntesis de cierre? ¿Los partidos no devuelven un valor booleano? ¿Intercambio de parámetros de cadena? Todo hará que su código no se compile.

Aunque es posible que desee esto si es "XX_XX":

var r = new Regex("[A-Z]{2}_[A-Z]{2}");
return r.IsMatch(input);

contestado el 22 de mayo de 12 a las 21:05

Tienes que poner [AZ]_[AZ] entre comillas así:

if(r.Matches("[A-Z]_[A-Z]")

contestado el 22 de mayo de 12 a las 20:05

  1. Citas.
  2. Dos personajes a cada lado de la _.
  3. La Regex constructor toma el patrón; los Matches El método toma la cadena para buscar.
  4. La Matches el método devuelve un MatchCollection. IsMatch devuelve un booleano.

Al igual que:

if (Regex.IsMatch(input, "[A-Z]{2}_[A-Z]{2}")

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.