如何在Perl中检查值是数字,字母还是字母数字?

dex*_*ter 3 regex perl

我有数组的值是用户输入,如:

aa df rrr5 4323 54 hjy 10 gj @fgf %d
Run Code Online (Sandbox Code Playgroud)

现在,我想检查数组中的每个值,看它是数字,字母(a-zA-Z)还是字母数字,并将它们保存在其他相应的数组中.

我已经做好了:

my @num;
my @char;
my @alphanum;

my $str =<>;
  my @temp = split(" ",$str);
        foreach (@temp)
           {
                print "input : $_ \n";
                if ($_ =~/^(\d+\.?\d*|\.\d+)$/)
                    {
                        push(@num,$_);
                    }
           }
Run Code Online (Sandbox Code Playgroud)

这有效.同样,我想检查字母和字母数字值

字母数字的例子是: fr43 6t$ $eed5 *jh

Leo*_*ans 7

Perl支持POSIX字符类,所以你实际上可以这样做:

$string =~ /^[[:alpha:]]+$/;
$string =~ /^[[:alnum:]]+$/;
Run Code Online (Sandbox Code Playgroud)

数字定义不太明确,但Scalar :: Util的Looks_like_number函数可能会按照您的要求执行.