2013-07-03 79 views
3

我試圖從用戶那裏收集一個ip,並進行一些基本的錯誤檢查,並且攻擊了不必要的空白區域,但我遇到了一些我認爲是我的正則表達式的問題。用於IP地址的正則表達式不匹配

my $serverIP; 

print "Enter vSphere server's IP\n"; 
while(<>){ 
    $serverIP = $_; 
    print "DEBUG <$serverIP>\n"; 
    if (/$serverIP = (\d+\.\d+\.\d+\.\d+)/){ 
    print "Match found $1\n"; 
    $serverIP = $1; 
    last; 
    } 
    else{ 
    print "Not an IP\n"; 
    print "Please enter a valid IP\n"; 
    } 
} 
print "I found $serverIP!\n"; 

我知道正則表達式是簡單的,但我認爲它應該

+1

'使用嚴格;使用警告;總是。 – tripleee

回答

10

變化不匹配1.1.1.1:

if (/$serverIP = (\d+\.\d+\.\d+\.\d+)/){ 

到:

if ($serverIP =~ /(\d+\.\d+\.\d+\.\d+)/){ 
+0

現在我覺得很蠢,謝謝=) – dakillakan

+1

不客氣。我們都需要時不時的第二雙眼睛。 – toolic

+1

雖然這可以讓a1.2.3.4.5b嘗試使用'/^\ d +。\ d + \。\ d + \ d + $ /'來代替嗎? (理想情況下,修剪空白後)。 – tripleee

相關問題