Expresiones Regulares

12/08/2004 - 23:31 por Miguel Ortiz Falcón | Informe spam
Hola grupo, fijense que ando un poco confundido con las
expresiones regulares, principalmente con el
conjunto "^$", por ejemplo el siguiente método validaría
un codigo postal


// si el codigo postal es erroneo muestra un mensaje
if ( !Regex.Match( zipTextBox.Text, @"^\d{5}$" ).Success )
{
// zip was incorrect
MessageBox.Show( "Invalid Zip", "Message");
}

Porque "segun yo", la expresion regular daria "Success"
cuando la expresion encuentre cualquier cadena "excepto"
un numero de 5 digitos, hasta ahí está bien, puesto que
es lo que se quiere que cuando no sea un numero de 5
digitos marque el error...pero da la casualidad que tiene
que negarse después eso (!)...y es donde ahí ya no le
entiendo por qué se está negando, y o sea si esta bien
que se niege porque si no no funciona, pero no entiendo
por qué esa negacion porque segun yo la expresion "Match"
cuando la cadena es "invalida" aparentemente

A ver que onda no ?...

Saludos...
Miguel Ortiz Falcón
 

Leer las respuestas

#1 Jose Alfredo
13/08/2004 - 01:21 | Informe spam
Hola!


^\d{5}$ : La cadena que tu planteas SOLO coincide cuando tienes un número
de 5 dígitos

en ese caso el operador ^ no significa negación, para que el mismo
signifique negación debe estar entre corchetes

[^\d]{5} pero en este caso existe sucess solo cuando tienes una cadena de 5
símbolos no numéricos o más

si las expresiones regulares no son faciles, por eso yo me hice un evaluador
de cadenas para no volverme loco en la programación.

Saludos

Jose Alfredo
Bad Honnef
RFA


"Miguel Ortiz Falcón" schrieb im
Newsbeitrag news:554b01c480b3$bc09b2b0$
Hola grupo, fijense que ando un poco confundido con las
expresiones regulares, principalmente con el
conjunto "^$", por ejemplo el siguiente método validaría
un codigo postal


// si el codigo postal es erroneo muestra un mensaje
if ( !Regex.Match( zipTextBox.Text, @"^\d{5}$" ).Success )
{
// zip was incorrect
MessageBox.Show( "Invalid Zip", "Message");
}

Porque "segun yo", la expresion regular daria "Success"
cuando la expresion encuentre cualquier cadena "excepto"
un numero de 5 digitos, hasta ahí está bien, puesto que
es lo que se quiere que cuando no sea un numero de 5
digitos marque el error...pero da la casualidad que tiene
que negarse después eso (!)...y es donde ahí ya no le
entiendo por qué se está negando, y o sea si esta bien
que se niege porque si no no funciona, pero no entiendo
por qué esa negacion porque segun yo la expresion "Match"
cuando la cadena es "invalida" aparentemente

A ver que onda no ?...

Saludos...
Miguel Ortiz Falcón

Preguntas similares