1、IPV4地址
网际协议版本4(Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。
IPv4地址的长度为32位,分为4段,每段8位。用十进制数字表示,每段数字范围为0~255,段与段之间用英文句点“.”隔开,比如:192.168.0.1。
2、IPV6地址
IPv6地址有128位,通常写成8组,每组为四个十六进制数的形式。比如:0011:0000:0000:0000:0000:0000:0000:0011 。还可以采用零压缩法表示,如果几个连续段位的值都是0,那么这些0就可以简单的以“::”来表示,上述地址就可写成11::11。
3、HTA测试代码
<!DOCTYPE html>
<html>
<head>
<title>IP地址正则</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style type="text/css">
body {
height: 100%;
width: 100%;
margin: 0px;
position: absolute;
background-color: #dcecff;
}
div.head {
width: 100%;
height: 10%;
}
div.left,div.right{
top: 10%;
width: 49%;
height: 10%;
float: left;
}
div.head,div.left,div.right{
outline: #c1cedd;
outline-width: 2px;
outline-style: outset;
}
div.head div,div.left div,div.right div{
padding: 6px;
margin-right: 6px;
}
div label{
width: 100%;
display: block;
}
div label{
width: 100%;
display: block;
}
div textarea {
width: 100%;
height: 300px;
resize: vertical;
position: relative;
background-color: #ffffff;
}
</style>
<script type="">
$(document).ready(function(){
function is_ipv4(str){
var reg = /^((25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d).){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/;
return reg.test(str);
}
function is_ipv6(str){
var reg = /^((([\dA-Fa-f]{1,4}:){7}([\dA-Fa-f]{1,4}|:))|(([\dA-Fa-f]{1,4}:){6}(:[\dA-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([\dA-Fa-f]{1,4}:){5}(((:[\dA-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([\dA-Fa-f]{1,4}:){4}(((:[\dA-Fa-f]{1,4}){1,3})|((:[\dA-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([\dA-Fa-f]{1,4}:){3}(((:[\dA-Fa-f]{1,4}){1,4})|((:[\dA-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([\dA-Fa-f]{1,4}:){2}(((:[\dA-Fa-f]{1,4}){1,5})|((:[\dA-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([\dA-Fa-f]{1,4}:){1}(((:[\dA-Fa-f]{1,4}){1,6})|((:[\dA-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[\dA-Fa-f]{1,4}){1,7})|((:[\dA-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.\+)?$/;
return reg.test(str);
}
function ip_check(strInput, numType){
var aInput = new Array();
var objOutput = $("#text_output");
var bCheck = false;
var strOutput = objOutput.val();
aInput = strInput.split("\n");
for (var i = 0;i < aInput.length; ++i)
{
strOutput += "[" + aInput[i] + "]";
if("ipv4" == numType)
{
bCheck = is_ipv4(aInput[i]);
}
else if("ipv6" == numType)
{
bCheck = is_ipv6(aInput[i]);
}
if(true == bCheck)
{
strOutput += "合法\n";
}
else
{
strOutput += "非法\n";
}
}
objOutput.val(strOutput);
}
$("#btn_ipv4").click(function(){
ip_check($("#text_input").val(), "ipv4");
});
$("#btn_ipv6").click(function(){
ip_check($("#text_input").val(), "ipv6");
});
$("#btn_clear_input").click(function(){
$("#text_input").val("");
});
$("#btn_clear_output").click(function(){
$("#text_output").val("");
});
});
</script>
</head>
<body>
<div class="head">
<div>
<button type="button" id="btn_ipv4">IPV4测试</button>
<button type="button" id="btn_ipv6">IPV6测试</button>
<button type="button" id="btn_clear_input">清除输入</button>
<button type="button" id="btn_clear_output">清除输出</button>
</div>
</div>
<div class="left">
<div>
<label>输入:</label>
<textarea id="text_input"></textarea>
</div>
</div>
<div class="right">
<div>
<label>输出:</label>
<textarea id="text_output"></textarea>
</div>
</div>
</body>
</html>