Bonjour,
Comment savoir qu'une chaine est numérique ? qu'elle ne comporte pas de caractére alpha
Version imprimable
Bonjour,
Comment savoir qu'une chaine est numérique ? qu'elle ne comporte pas de caractére alpha
Avec une regex :
edit :Code:
1
2
3
4
5
6 if ( $var =~ m/^\d+$/ ) { print " numérique\n"; } else { print " alphanumérique\n"; }
s'il y a présence du caractère ''-", il faut modifier la ragex :
Code:
1
2
3
4
5
6 if ( $var =~ m/^-?\d+$/ ) { print " numérique\n"; } else { print " alphanumérique\n"; }
Il faut aussi tenir compte d'éventuels points ou virgules (sépérateurs décimal ou milliers) dans le nombre. (Je ne parle pas de notation scientifique, de nombres complexes ou de numériques hexadécimaux, ce sont des cas particuliers, mais il ne fait les oublier complètement.
)
Ou tu peux faire ca:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 use strict; use warnings; use Test::More; ok(isNumber('123'), '123 is a number'); ok(isNumber('-123'), '-123 is a number'); ok(isNumber('123.456'), '123.456 is a number'); ok(isNumber('-123.456'), '-123.456 is a number'); ok(!isNumber('123a'), '123a is NOT a number'); ok(isNumber('0'), '0 is a number'); done_testing(); sub isNumber { my ($num) = @_; no warnings; return ($num + 0e0 eq $num) ? 1 : 0; }