查询IP地址: select 地区 from ip表 where 用户ip>起始IP and 用户ip<结束ip 
 通过这条sql语句就可以查询出用户ip所对应的地区结果。由于用户ip与起始ip和结束ip的比较属于字符串比较,如果用户ip为9.1.1.1,那么它与61.54.231.245比较的结果就是前者大于后者,因为用户ip的第一个字符“9”大于61.54.231.245中的第一个字符“6”。
我们该怎样让它返回正确的结果。思路是  将9.1.1.1变化成009.001.001.001后与061.054.231.245进行比较就可以了,可以用正则表达式的方法来解决。 
那么该怎样解决呢? 请高手快来啊。焦急等待中~~~~~~~~~

解决方案 »

  1.   

    JavaScript版本:
    <script>
    var str="11.1.111.11";
    str=str.replace(/(^|\.)(\d)(\.|$)/g,"$100$2$3");
    str=str.replace(/(^|\.)(\d)(\.|$)/g,"$100$2$3");
    str=str.replace(/(^|\.)(\d{2})(\.|$)/g,"$10$2$3");
    str=str.replace(/(^|\.)(\d{2})(\.|$)/g,"$10$2$3");
    alert(str);
    </script>Java版本:
    String str="11.1.111.11";
    str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");
    str=str.replaceAll("(^|\\.)(\\d)(\\.|$)","$100$2$3");
    str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
    str=str.replaceAll("(^|\\.)(\\d{2})(\\.|$)","$10$2$3");
    System.out.println(str);
      

  2.   

    还能再简化一下
    <script>
    var str="11.1.111.11";
    str=str.replace(/(\d)(\.|$)/g,"00$1$2");
    str=str.replace(/(\d{2})(\.|$)/g,"0$1$2");
    alert(str);
    </script>Java版本:
    String str="11.1.111.11";
    str=str.replaceAll("(\\d)(\\.|$)","00$1$2");
    str=str.replaceAll("(\\d{2})(\\.|$)","0$1$2");
    System.out.println(str);
      

  3.   

    $100是怎么来的?
    lip009把你的QQ号告诉我啊,以后不懂的问题直接问你得了