2013-08-01 73 views
0

之间我只想来验证IP地址只接受3三个点的一些数字适当点的IP地址验证在

除权后: 有效:191.123.121.202是有一定的小数点后3个点有效。 无效:191..123.121.202无效,其中2点在序列

整点:想要一个强大的IP验证

$("input.onlynumberdecimal").keydown(function (event) { 

     console.log(event.keyCode); 

     if (event.shiftKey == true) { 
      event.preventDefault(); 
     } 

     if ((event.keyCode >= 48 && event.keyCode <= 57) || 
      (event.keyCode >= 96 && event.keyCode <= 105) || 
      event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || 
      event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) { 

     } else { 
      event.preventDefault(); 
     } 

     if($(this).val().indexOf('.') !== -1 && event.keyCode == 190) 
      event.preventDefault(); 
     //if a decimal has been added, disable the "."-button 

    }); 

在一定程度上我有一些其他网站的帮助了。如果用户复制并粘贴正确的IP,那么它也应该接受,否则它不应该允许他粘贴。

DEMO

+0

[改变IP地址输入框]的可能重复(HTTP:/ /stackoverflow.com/questions/12304612/input-box-for-changing-ip-address) –

+1

对blur()而不是keypress/down()进行验证更为典型。一次验证整个文本要容易得多,边缘案例要少得多(例如复制/粘贴的例子)。 – Phylogenesis

+1

甚至更​​好的提交,然后再在服务器上 – mplungjan

回答

7

DEMO

试试这个

var pattern = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/; 
x = 46; 
$('input[type="text"]').keypress(function (e) { 
    if (e.which != 8 && e.which != 0 && e.which != x && (e.which < 48 || e.which > 57)) { 
     console.log(e.which); 
     return false; 
    } 
}).keyup(function() { 
    var this1 = $(this); 
    if (!pattern.test(this1.val())) { 
     $('#validate_ip').text('Not Valid IP'); 
     while (this1.val().indexOf("..") !== -1) { 
      this1.val(this1.val().replace('..', '.')); 
     } 
     x = 46; 
    } else { 
     x = 0; 
     var lastChar = this1.val().substr(this1.val().length - 1); 
     if (lastChar == '.') { 
      this1.val(this1.val().slice(0, -1)); 
     } 
     var ip = this1.val().split('.'); 
     if (ip.length == 4) { 
      $('#validate_ip').text('Valid IP'); 
     } 
    } 
}); 

更新与端口号的验证IP地址。

Ex。 192.168.2.100:27896

var pattern = /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\:([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\b/; 
x = 46; 
$('input[type="text"]').keypress(function (e) { 
    console.log(e.which); 
    if (e.which != 8 && e.which != 0 && e.which != x && e.which !=58 && (e.which < 48 || e.which > 57)) { 
     console.log(e.which); 
     return false; 
    } 
}).keyup(function() { 
    var this1 = $(this); 
    if (!pattern.test(this1.val())) { 
     $('#validate_ip').text('Not Valid IP'); 
     while (this1.val().indexOf("..") !== -1) { 
      this1.val(this1.val().replace('..', '.')); 
     } 
     x = 46; 
    } else { 
     x = 0; 
     var lastChar = this1.val().substr(this1.val().length - 1); 
     if (lastChar == '.') { 
      this1.val(this1.val().slice(0, -1)); 
     } 
     var ip = this1.val().split('.'); 
     if (ip.length == 4) { 
      $('#validate_ip').text('Valid IP'); 
     } 
    } 
}); 

WORKING FIDDLE

+0

为什么'\ b'而不是'^'或'$'? –

+0

不要忘记'10..1'是一个有效的IP地址 –

+0

@GeraldSchneider是的,你可以检查你自己http://jsfiddle.net/cse_tushar/aPM5X/2 –

1
function isIpAddress(s) { 
    if (typeof s !== 'string') { return false; } 
    // There must be 4 parts separated by dots. 
    var parts = s.split('.'); 
    if (parts.length !== 4) { return false; } 
    // Each of the four parts must be an integer in the range 0 to 255. 
    for (var i = 0; i < 4; ++i) { 
    var part = parts[i]; 
    // Each part must consist of 1 to 3 decimal digits. 
    if (!/^\d{1,3}$/.test(part)) { return false; } 
    var n = +part; 
    if (0 > n || n > 0xff) { return false; } 
    } 
    return true; 
} 
0

试试这个。

<SCRIPT language="JavaScript"> 
function verifydata(incoming) 
{ 
    errorlog = "" 

    // CHECK ALL THE FIELDS TO VERIFY THEIR EXISTENCE 
    if (incoming.ipstart.value == "") 
     errorlog += "Starting IP Address is blank.\n" 
    if (incoming.ipend.value == "") 
     errorlog += "Ending IP Address is blank.\n" 
    if (!(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(incoming.ipstart.value))) 
     errorlog += "Incorrect Starting IP Address Format.\n" 
    if (!(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(incoming.ipend.value))) 
     errorlog += "Incorrect Ending IP Address Format.\n" 

} 
</SCRIPT> 
0

OR 可以使用jQuery Mask Plugin。使用起来非常简单,它会添加。 (点)和数字占位符将被标记。

0

以下解决方案将验证输入的IP地址值,包括格式&它也是值。它将接受分0.0.0.0和最大255.255.255.255。如果输入的IP地址无效,则代码将突出显示粉红色的输入控件&清除文本,否则将保持输入的有效值。

把输入标签页上:在适当的Java脚本文件

<input type="text" name="IpAddress" id="IpAddress" class="input-medium" onkeypress="return IPAddressKeyOnly(event)" onblur="confirmIPAddress();"/> 

添加下面的方法或包括在网页它的自我。

1)来处理按键事件:

function IPAddressKeyOnly(e) { 
    var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode; 
    if (keyCode != 46 && keyCode > 31 && (keyCode < 48 || keyCode > 57)) 
     return false; 
    return true; 
} 

2)处理正确的IP地址值验证:

function confirmIPAddress() { 
    var ip = document.getElementById("IpAddress"); 
    if (ip.value.length >0 && ip.value.length<=15) { 
     ip.style.background = "white"; 
     var ipSlot=ip.value.split("."); 
     if(ipSlot.length==4){ 
     for (var i=0;i<ipSlot.length;i++){ 
     var l=ipSlot[i].length; 
      if (l >0 && l<=3){ 
       if(ipSlot[i]>=0 && ipSlot[i]<256){} 
       else{ip.value = "";ip.style.background = "pink";break ;return false;} 
      }else{ 
       ip.value = "";ip.style.background = "pink";break ;return false; 
      } 
     } 
    }else{ip.value = "";ip.style.background = "pink";return false; } 
} 
else{ip.value = "";ip.style.background = "pink";} 

}

0

试一次。

//Check Format 
var ip = ip.split("."); 

if (ip.length != 4) { 
    return false; 
} 

//Check Numbers 
for (var c = 0; c < 4; c++) { 
    //Perform Test 
    if(isNaN(parseFloat(ip[c])) || !isFinite(ip[c]) || ip[c] < 0 || ip[c] > 255 || ip[c].indexOf(" ") !== -1 || ip[c].match(/^-\d+$/)){ 

     return false; 
    } 
} 
return true; 
0
 //invalid ip send 
     ipvalidation('256.0.0.0'); 

     //ip validation function 
     function ipvalidation(x){ 
      limit = 255; 
      [ii, xx, yy, cc] = x.split('.'); 
      if(ii <= limit && xx <= limit && yy <= limit && cc <= limit){ 
       alert('valid ip'); 
      } else { 
       alert('invalid ip'); 
      } 
     } 
+1

请解释你的代码。 – Fidel90

1

使用正则表达式,这和正则表达式的IPv4地址是

/((25 [0-5] | 2 [0-4] [0-9] | [01 ] [0-9] [0-9])(| $)){4}/

function validateIP(ipAddress){ ipv4Re = new RegExp('^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}', 'i'); if(ipv4Re.test(ipAddress)){ return "its a vaild address"} else return "its an invalid address"} 

它会验证:?。

  • 0。 0.0.0
  • 255.255.255.255
  • 191.123.121.202

作废: - 191..123.121.202