try this page<html>
<head>
<script language="JavaScript">
<!-- 
function validIp(ipstr)
{
    var IpPat=new RegExp("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$");
  var IPArray=ipstr.match(IpPat);
if (IPArray!=null) 
{ // this is an IP address
for (var i=1;i<=4;i++)
{
if (IPArray[i]>255) 
{
alert(" IP address is invalid!(large than 255)");
return false;
     }
}
}else{
alert("IP address is invalid!(format error)"); 
return false;
}}
// -->
</script>
</head><body>
<form name=emailform onSubmit="return validIp(this.ipaddr.value);">
   Your IP Address:  <input type=text name="ipaddr"><br/>                        <input type=submit value="Submit">
</form>
</body>
</html>

解决方案 »

  1.   

    谢谢hgknight(江雨.net) 这是我写的
    //检测ip地址
    function isIPAddress()
    {
    if(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(document.RegExpDemo.txtIP.value)==false)
    {
    window.alert('错误的IP地址格式');
    return;
    }
    if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
    {
    window.alert('错误的IP地址');
    return;
    }
    window.alert(document.RegExpDemo.txtIP.value);
    }象  10.00.00.20 可以通过验证,但是我想显示的是 10.0.0.20 这个地址~
      

  2.   

    http://www.regexlib.com/DisplayPatterns.aspx?cattabindex=1&categoryId=2这里n多,如果自己不会写的话
      

  3.   

    ^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])\.(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$
      

  4.   

    pignet(猪.net) 兄弟不至于这么多吧~~~
    我是想 
    数字在1-254 的范围内
       010  转换成 10
       000  转换成  0
       100  转换成 100
    的正则表达式
      

  5.   

    to newyan(江中彦)
    你的东西,我测试出来了,你看看 s=document.Form1.txt.value;
    var ss= ("000"+ s).substr(("000"+s).length-3); 
    alert(ss);
      

  6.   

    to newyan(江中彦)
      给分吗? 呵呵
      

  7.   

    这里为什么一定要用正则式?? 用一个简单的JS方法 parseInt() 不就全部搞定??
    parseInt("000", 10);
    parseInt("010", 10);
    parseInt("100", 10);
      

  8.   

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function IP(str)
    {
      var reg = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
      if (!reg.test(str))
      {
        alert('错误的IP地址格式');
        return false;
      }
      var a = str.match(reg);
      if(!(a[0]==parseInt(a[0]) && a[2]==parseInt(a[2]) && a[4]==parseInt(a[4]) && a[6]==parseInt(a[6])))
      {
        alert('错误的IP地址格式, 有零!!');
        return false;
      }
      if(a[0]<1||a[0]>255||a[2]<1||a[2]>255||a[4]<1||a[4]>255||a[6]<1||a[6]>255)
      {
        alert('错误的IP地址');
        return false;
      }
      return true;
    }
    IP("10.020.020.2");
    IP("10.20.20.2");
    //-->
    </SCRIPT>
      

  9.   

    Regex.Replace(ipStr, "(?<=(\A|\.))0+(?=[1-9]|0(\.|\Z))", "")
      

  10.   

    解决:
    如下str=document.RegExpDemo.txtIP.value;
    if(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.test(str)==false)
    {
    window.alert('错误的IP地址格式');
    document.RegExpDemo.txtIP.select();
    document.RegExpDemo.txtIP.focus();
    return;
    }
    if(RegExp.$1<1 || RegExp.$1>254||RegExp.$2<0||RegExp.$2>254||RegExp.$3<0||RegExp.$3>254||RegExp.$4<1||RegExp.$4>254)
    {
    window.alert('错误的IP地址');
    document.RegExpDemo.txtIP.select();
    document.RegExpDemo.txtIP.focus();
    return;
    }
    //剔除 如  010.020.020.03 前面 的0 
    var str=str.replace(/0(\d)/g,"$1");
    str=str.replace(/0(\d)/g,"$1");
    window.alert(str);
      

  11.   

    不知道还能不能更简单的写法,
    我是指
    var str=str.replace(/0(\d)/g,"$1");
    str=str.replace(/0(\d)/g,"$1"); 这两句如果只用str.replace(/0(\d)/g,"$1"); 的话 象 02 , 03 可以显示成 2. 3 
    但是 002   003 只能显示出 02.  03 这样的 
    不知道正则表达式能不能重复匹配  感觉就象 递归 一样 
     
      

  12.   

    /0*([1-9]{1,}|0)应该可以btw:不知道/0是怎样匹配的,我只试过在WinForm程序用正则表达式,上面我贴的那个是测试过了可以的