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'时。它说匹配。据我所知,它不应该匹配,因为字符串中有数字。 任何人都可以解释一下,为什么这场比赛会发生?
答案 0 :(得分:2)
你需要这样写:
<强>说明:强>
您的正则表达式/[^\d*]/
匹配不包含数字的行的部分或*
,因此只要您的行中包含NaN字符,它就会起作用。
要说明整条线,你必须明确地说,从头到尾它是由NaN字符组成的
答案 1 :(得分:0)
你可以这样做:
if($str =~ /\D/) {
print "\nNOT a Number\n";
}
else {
print "\nThis is a number\n";
}
\D
匹配任何非数字的字符。