Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Expresión regular para validar dirección IP (https://www.clubdelphi.com/foros/showthread.php?t=63347)

noob 10-02-2009 14:22:30

Expresión regular para validar dirección IP
 
Hola, estoy utilizando las funciones de la librería RegExp Studio para realizar validaciones mediante expresiones regulares, tengo esta expresión regular para validar una dirección IP:

Código Delphi [-]
function TForm1.IPIncorrecta(Cadena: string): boolean;
var
  ExpresionRegular: TRegExpr;
begin
  Result := True;
  ExpresionRegular := TRegExpr.Create;
  ExpresionRegular.Expression := '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$';
  if ExpresionRegular.Exec(Cadena) then
    Result := False;
end;

pero con ciertos valores, como por ejemplo, 192.168.0.11 me genera la siguiente excepción:

Project raised exception class 'ERegExpr' with message:
TRegExpr(exec): Loop Without LoopEntry !

He revisado mi expresión regular y parece que todo está correcto. ¿Qué es lo que ocurre?

Saludos.

noob 15-02-2009 16:54:54

Al final he hecho esto y funciona:

Código Delphi [-]
function IPIncorrecta(Cadena: string): boolean;
var
  ExpresionRegular: TRegExpr;
begin
  Result := True;
  ExpresionRegular := TRegExpr.Create;
  try
    ExpresionRegular.Expression := '^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){2}(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))$';
    if ExpresionRegular.Exec(Cadena) then
      Result := False;
  finally
    ExpresionRegular.Free;
  end;
end;

No se por qué la anterior no funciona correctamente.

Saludos.


La franja horaria es GMT +2. Ahora son las 10:20:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi