2012-03-13 101 views
-2

我有一个表单,它有一个IP地址字段。 我想检查IP是否为127.0.0.1,因为我要ping IP。 明显pinging 127.0.0.1会ping本地主机。PHP正则表达式:127.0.0.1(和检查端口)

为了防止这种情况,我想用它应该检查这个的preg_match: - 127.0.0.1 127.0.0.1或其中包括一个端口(例如127.0.0.1:80)

+0

什么PHP的版本?你可以使用['filter_var'](http://php.net/manual/en/function.filter-var.php)PHP> = v5.2 – 2012-03-13 19:16:29

回答

0
^127\.0{1,3}\.0{1,3}\.0{,2}1(:[0-9]+)?$ 

应该做的伎俩,如果我假设你使用PHP的preg_match(或similar)的任务。

+1

更新为占领前零,per @ jperovic的回应。 – 2012-03-13 19:23:43

0

127\.0\.0\.1(?:\:[0-9]+)?

查找带有冒号的127.0.0.1,后跟1个或多个数字。

+0

谢谢,下次请包括完整的正则表达式,包括分隔符。另外,端口应限制为5个字符。 – Jeffrey 2012-03-13 19:11:29

+3

@ArtaexMedia - 你知道这些评论如何粗鲁吗? – 2012-03-13 19:17:05

+2

@ArtaexMedia - 下一次,请向我们证明,在提示社区之前,您至少愿意尝试**自己解决问题。我们很友善,而且我们不咬人 - 只要你不是虐待。 – 2012-03-13 19:26:32

2
<?php 
    $pattern = "/^127\.0{0,3}\.0{0,3}.0{0,2}1(:\d+)?$/"; 
    $string = "127.0.0.1:8080"; 

    if (preg_match($pattern, $string)){ 
     echo 'is a match'; 
    }else{ 
     echo 'is not a match'; 
    } 
?> 

这应该有效。请注意,你必须要考虑到的前导零...

+0

前导零的良好通话。 +1 – 2012-03-13 19:27:02

0

你可以试试这个 /(127\.0\.0\.1\:.+?\d{1,5})|(127\.0\.0\.1)/