Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Expresion regular para numero decimal

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mar Abr 11, 2006 12:22 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Expresion regular para numero decimal Responder citando

En el tutorial está esta:

Código:
$long =~ /\d+/


que sirve para comprobar que contenga al menos algún caracter numérico.


por otra parte he visto que:

Código:
$long =~ /^[0-9]+$/


me serviría para comprobar que tenga SÓLO numeros.

Pero yo quiero que tenga sólo números POSITIVOS, o sea que me excluya el 0 (sólo, porque si pongo [1-9] me excluye el 0, pero también cualquier número que lo contenga, como el 100).

Qué debo añadir? O cómo tendría que haberla planteado?
Mensaje Mar Abr 11, 2006 1:00 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Código:
$long =~ /^[1-9]\d*$/;

Un número entero positivo es aquel que comienza (^) por un dígito entre uno y nueve ([1-9]) seguido posiblemente por más (*) dígitos (\d).
Mensaje Mar Abr 11, 2006 1:08 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

pues lo siento, pero no funciona :S así no me coge ningun numero Confused
Mensaje Mar Abr 11, 2006 1:14 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Código:
perl -le '$x=100;$x=~/^([1-9]\d*)$/;print $1'

A mi me funciona... sale 100...
Para 'coger' números, hay que usar paréntesis...
O poner la expresión regular en un if:
Código:
perl -le '$x=100; if ( $x =~ /^[1-9]\d*$/) { print "$x es positivo" }'
Mensaje Mar Abr 11, 2006 1:23 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

....

parece q estaba cansado mi script ahora va ¬¬

thanx! Smile
Mensaje Mar Abr 11, 2006 5:24 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

Si lo único que comprueba son números, entonces creo que la expresión regular es demasiado, pues simplemente puedes hacer lo siguiente:

Código:

if($long > 0){
    print "Es un número entero";
}



Saludos
Mensaje Mar Abr 11, 2006 5:45 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

gracias,
es la entrada de un dato en un formulario. necesito también que no deje poner letras ni caracteres. con la expresion me va bien Smile
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group