我想仅验证IP地址,只接受一些数字后的3个三点
例如: 有效: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,那么它应该接受,否则它不应该允许他粘贴。
答案 0 :(得分:8)
试试这个
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地址的更新。
实施例。 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');
}
}
});
答案 1 :(得分:3)
使用正则表达式和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"}
它将验证:
并且无效: - 191..123.121.202
答案 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;
}
答案 3 :(得分: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>
答案 4 :(得分:0)
OR 您可以使用jQuery Mask Plugin。这么简单易用,它会添加。 (点)和数字的占位符将被标记。
答案 5 :(得分:0)
以下解决方案将验证输入的IP地址值,包括格式&amp;它的价值也是。它将接受最小0.0.0.0和最大255.255.255.255。如果输入的IP地址无效,则代码将以粉红色和高亮显示输入控件。清除文本,否则将保持输入的有效值。
将输入标记放在页面上:
<input type="text" name="IpAddress" id="IpAddress" class="input-medium" onkeypress="return IPAddressKeyOnly(event)" onblur="confirmIPAddress();"/>
在适当的java脚本文件中添加以下方法,或者在页面中包含它。
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";}
}
答案 6 :(得分: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;
答案 7 :(得分: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');
}
}
答案 8 :(得分:0)
只需在其中添加一个稍微冗长一些但仍然很小的实现即可:
let isIpv4 = ip => {
// Test length to see that we have a valid ipv4 address
// Must consist of 4 values seperated by .
// Each char must be a number between 0 and 255 and not empty
return ip !== '' && ip.split('.').filter( n => ( n !== '' && n >= 0 && n <= 255 ) ).length === 4
}
console.log(isIpv4('192.168.2.1')) // True
console.log(isIpv4('255.255.255')) // False
console.log(isIpv4('255.ab.255.255')) // False