2015-04-20 452 views
0
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'。它說匹配。據我所知,它不應該匹配字符串中的數字。 任何人都可以請解釋我,爲什麼會發生這種情況?Perl正則表達式匹配數字

+1

'/ [^ \ d *] /'匹配字符串中的任何字符,它不是數字,也不是字面星號'*' –

回答

2

你需要把它寫這種方式:

/^[^\d]*$/

說明: 你的正則表達式/[^\d*]/線匹配部分不包含數字或爲*,所以它只要可以作爲你在你的線上有NaN字符。 馬赫整條生產線,你必須明確地說,從開始到結束它是由不同的NaN字符

0

你可以這樣做:

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

\D比賽不是數字的任何字符。