$ipStr = "@#!E#@#$@adfassfsa:192.168.5.212";$patten = '/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/';preg_match_all ( $patten, $ipStr, $out );var_dump ( $out );我想取出$ipStr字符串中的ip地址 192.168.5.212思路如下是 写个一个IP地址的正则表达式 然后匹配字符串字符串可我 现在 正则表达式 写了很多种 var_dump 出来都是 空的
 
下面是我在网上找的 IP正则表达式 试过 都没有用
$patten = '/^(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.)(([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/';$patten = '/^((1?\d?\d|(2([0-4]\d|5[0-5])))\.){3}(1?\d?\d|(2([0-4]\d|5[0-5])))$/';$patten="/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/";$patten = "=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g";也许会有人说 你分割字符串 不就好了吗   不行 因为 字符串不能确定格式请大家帮帮忙 谢谢

解决方案 »

  1.   

    $patten = '/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/';这样的正则条件都错了 当然你就无法匹配到了。
      

  2.   

    $patten = '/(\d+)\.(\d+)\.(\d+)\.(\d+)$/';Array ( [0] => 192.168.5.212 [1] => 192 [2] => 168 [3] => 5 [4] => 212 ) 
      

  3.   

    为什么要用限定符"^","$"呢?直接用'/(\d+)\.(\d+)\.(\d+)\.(\d+)/'就可以了
      

  4.   

    又不是验证,何必搞那么复杂$ipStr = "@#!E#@#$@adfassfsa:192.168.5.212";
    $patten = '/([\d.]+)/';
    preg_match_all ( $patten, $ipStr, $out );
    var_dump ( $out );array(2) {
      [0]=>
      array(1) {
        [0]=>
        string(13) "192.168.5.212"
      }
      [1]=>
      array(1) {
        [0]=>
        string(13) "192.168.5.212"
      }
    }
      

  5.   

      弄个agent 模块 需要者一小部分 功能