IP地址的正则表达式不匹配。

3

我试图从用户那里收集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.1.1.1


1
始终使用 use strict; use warnings; - tripleee
1个回答

10

更改:

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

致:

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

1
那将允许a1.2.3.4.5b,不过,也许可以尝试使用/^\d+.\d+\.\d+\d+$/(最好在修剪空格后)。 - tripleee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接