Expresiones regulares - validar unidad

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

Expresiones regulares - validar unidad

Mensaje por jesss »

Hola,

Mi pregunta es bastante sencilla pero queda que no me aclaro demasiado con las expresiones regulares. La idea es que tengo un desplegable de unidades en un ComboBox que quiero validar por si se introduce alguna otra a mano:

Tengo un botón asociado a una función para validar. Simplemente es una letra (a-Z) y los dos puntos. Pero he estado probando y no me queda como yo quiero y ahora mismo, no responde nada.

Código: Seleccionar todo

Func CHECKUNIDAD()
	
Local $u=GUICtrlRead($List1)
$u=StringStripWS($u,8)

;$array=StringRegExp($u,'[[:alpha:]]:',1)
$array=StringRegExp($u,'([a-Z]{1}):',1)


if @error==0 Then 
	MsgBox(0,"SRE Example Result",$u&@CRLF&$array[0])
EndIf

EndFunc

Gracias por vuestras ayuda y vuestro tiempo

:smt001
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Expresiones regulares - validar unidad

Mensaje por juantxo »

Prueba con esto...

Código: Seleccionar todo

$array=StringRegExp($u,'(?i)([a-z]{1}):',1)
Lo que hace es básicamente, no tiene en cuenta si son mayúsculas o minúsculas, y que el carácter sea una letra de A a Z

Ya nos contaras...
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

Re: Expresiones regulares - validar unidad

Mensaje por jesss »

Hola,

Gracias por la expresión. Al final la he cogido así, aunque cuando pones más de una letra: ("sdfsdfsdf:444" o "ase:" ) te las da como válidas, aunque con $array[0] me coge la letra izquierda al lado de los dos puntos ("F" o "E") ya me es suficiente, aunque si averiguo como hacerlo sin concatenar 24x24 Ifs ya lo pondré.

Muchas gracias de nuevo.
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Expresiones regulares - validar unidad

Mensaje por Chefito »

Prueba esto:

Código: Seleccionar todo

$u="a:"
If StringLen($u)>2 Then
	MsgBox(0,"Error","Cadena demasiado larga. Ponga una unidad válida.")
ElseIf StringLen($u)=0 Then
	MsgBox(0,"Error","La casilla está en blanco.")
Else
	$array=StringRegExp($u,"([a-zA-Z]{1}):",1)
	If @error Then
		MsgBox(0,"Error","No es una unidad válida")
	Else
		MsgBox(0,"",$array[0])
	EndIf
EndIf
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
jesss
Mensajes: 12
Registrado: 28 Ene 2011, 18:07

Re: Expresiones regulares - validar unidad

Mensaje por jesss »

Hola, gracias. Eso me ha ido estupendo para controlarlo. Ahora me estoy peleando con un error de variable tipo object cuando lo he probado en otra máquina, pero ya voy a investigar un poco más.

Un saludo.
:smt038
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Expresiones regulares - validar unidad

Mensaje por Chefito »

Para eso también hay solución. Se pueden tratar errores de objetos. Mira en la ayuda en Autoit>COM Extensions to AutoIt. Busca la sección COM Error Handling. Ahí encontrarás como se pueden controlar los errores de un objeto creado en autoit.
En resumen te dice que se hace con esta función y estos parámetros: ObjEvent("AutoIt.Error","MyErrFunc") , donde MyErrFunc es el nombre de la función que quieres que se ejecute cuando salte el error....vamos, la que trata el error :smt003 .
Lo dicho, míralo en la ayuda.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder