• Publicidad

Expresión regular para número decimal

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Expresión regular para número decimal

Notapor slopal » 2006-04-11 13:22 @599

En el tutorial está esta:

$long =~ /\d+/

que sirve para comprobar que contenga al menos algún carácter numérico.

Por otra parte he visto que:

$long =~ /^[0-9]+$/

Me serviría para comprobar que tenga SÓLO números.

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?
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Publicidad

Re: Expresión regular para número decimal

Notapor explorer » 2006-04-11 14:00 @625

$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).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor slopal » 2006-04-11 14:08 @631

Pues lo siento, pero no funciona :S así no me coge ningún número :?
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Re: Expresión regular para número decimal

Notapor explorer » 2006-04-11 14:14 @635

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -le '$x=100;$x=~/^([1-9]\d*)$/;print $1'
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

A mi me funciona... sale 100...

Para 'coger' números, hay que usar paréntesis...

O poner la expresión regular en un if:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -le '$x=100; if ( $x =~ /^[1-9]\d*$/) { print "$x es positivo" }'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor slopal » 2006-04-11 14:23 @641

....

parece q estaba cansado mi script ahora va ¬¬

thanx! :)
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528

Notapor kidd » 2006-04-11 18:24 @808

Hola.

Si lo único que comprueba son números, entonces creo que la expresión regular es demasiado, pues simplemente puedes hacer lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. if ($long > 0){
  2.     print "Es un número entero";
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor slopal » 2006-04-11 18:45 @823

Gracias.

Es la entrada de un dato en un formulario. Necesito también que no deje poner letras ni caracteres. Con la expresión me va bien :)
slopal
Perlero nuevo
Perlero nuevo
 
Mensajes: 78
Registrado: 2005-11-23 11:41 @528


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados