Página 1 de 1

Expresiones regulares - validar unidad

Publicado: 04 Nov 2013, 16:02
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

Re: Expresiones regulares - validar unidad

Publicado: 05 Nov 2013, 14:11
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...

Re: Expresiones regulares - validar unidad

Publicado: 05 Nov 2013, 17:46
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.

Re: Expresiones regulares - validar unidad

Publicado: 05 Nov 2013, 21:09
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.

Re: Expresiones regulares - validar unidad

Publicado: 12 Nov 2013, 16:07
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

Re: Expresiones regulares - validar unidad

Publicado: 12 Nov 2013, 21:23
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.