Perl正则表达式匹配数字

时间:2015-04-20 10:03:47

标签: regex perl

use strict;
use warnings;

print "Enter string\n";
my $str = <STDIN>;
chomp($str);

if($str =~ /[^\d*]/)
{
print "\n";
print "*********MATCHED**********\n";
}
else
{
print "\n";
print "#######WRONG############\n";
}

当我输入字符串'2323adsdf'时。它说匹配。据我所知,它不应该匹配,因为字符串中有数字。 任何人都可以解释一下,为什么这场比赛会发生?

2 个答案:

答案 0 :(得分:2)

你需要这样写:

/^[^\d]*$/

<强>说明: 您的正则表达式/[^\d*]/匹配不包含数字的行的部分或*,因此只要您的行中包含NaN字符,它就会起作用。 要说明整条线,你必须明确地说,从头到尾它是由NaN字符组成的

答案 1 :(得分:0)

你可以这样做:

if($str =~ /\D/) {
    print "\nNOT a Number\n";
}
else {
    print "\nThis is a number\n";
}

\D匹配任何非数字的字符。