0

我正在尝试使用核心 javascript 验证 IP 地址。我想确保每个 IP 地址部分的值必须大于 > 100。但它不能正常工作。请查找以下代码以获取更多详细信息。

function testIP(){
            var ip=document.getElementById("ipaddress").value;
            var first= ip.substring(0,3);
            var second= ip.substring(4,7);
            var third= ip.substring(8,11);
            var fourth= ip.substring(12,15);
            var error=false;
            if(first){

                var ippart1 = 0+first;

                if(first<100){

                }
                else{
                    alert("Please enter a valid ip address.First part of ip address is incorrect"); 
                    error=true;
                }
            }
            else    
                error=true;
            if(second){

                var ippart2 = 0+second;

                if(ippart2<100){

                }
                else{
                    alert("Please enter a valid ip address.Second part of ip address is incorrect");
                    error=true;
                }
            }
            else    
                error=true;
            if(third){

                var ippart3 = 0+third;

                if(ippart3<100){

                }
                else{
                    alert("Please enter a valid ip address.Third part of ip address is incorrect"); 
                    error=true;
                }
            }
            else    
                error=true;
            if(fourth){

                var ippart4 = 0+fourth;
                if(ippart4<100){

                }
                else{
                    alert("Please enter a valid ip address.Forth part of ip address is incorrect");
                    error=true;
                }
            }
            else    
                error=true;
            if(error==true){

                return false;
            }
            else
                return true;

        }

我认为问题在于字符串到整数的转换。我也尝试过parseInt功能。它也不起作用。请看一下。

4

2 回答 2

3

您应该split()http://www.w3schools.com/jsref/jsref_split.asp)使用点的值。然后您可以检查这些值。

为什么你的方法不对;

考虑我输入 85.15.13.25

变量值:

first: 85.
second: 15.
third: 13.
fourth: 25

所以第一,第二和第三个变量是错误的,它们包含一个点。

于 2013-02-02T14:46:41.273 回答
1

首先,我建议使用此函数检查地址是否有效:

   function validate( value ) {
         RegE = /^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$/  
         if(value.match(RegE))  
            alert('Valid IP');  
         else  
            alert('Invalid IP'); 
      }

然后使用 parse int 但条件良好(> 而不是 <):

if(parseInt(first)>100){

                }

还可以考虑重构您的代码:)

于 2013-02-02T15:03:07.637 回答