关于ip地址和域地址的格式支持研究

目录

将域地址分配在hostname中

将域地址分配在hosts文件中

分别进行ping 测试,测试结果如下表

 前端js校验代码如下



将域地址分配在hostname中

[root@warclouds ~]# cat /etc/hostname
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
123456
123456a
123.123b
v
vb0.
.vb0.
.vb0.1
.vb0.a.1
.vb0.s.1.2
v-b
v_b
v-b.1
v_b.1
_
-
-_
_-

将域地址分配在hosts文件中

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
warclouds
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
v-b
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 123.123b
127.0.0.1 v
127.0.0.1 vb0.
127.0.0.1 .vb0.
127.0.0.1 .vb0.1
127.0.0.1 .vb0.a.1
127.0.0.1 .vb0.s.1.2
127.0.0.1 v-b
127.0.0.1 v_b
127.0.0.1 v_b.1
127.0.0.1 v-b.1
127.0.0.1 -
127.0.0.1 _
127.0.0.1 &
127.0.0.1 _-
127.0.0.1 -_

分别进行ping 测试,测试结果如下表

ip或域地址串 合法性 校验测试 解释 说明
127.0.0.1    
127.0  ×    
127.0x    
127 ×    
127.0.0. ×    
v    
vbs123    
vb0.    
.vb0.    
.vb0.1    
.vb0.a.1    
.vb0.s.1.2    
v-b    
v_b    
v-b.1    
v_b.1    
www.baidu.com    
分割线 极端特殊应不予支持
_ 下划线
_﹘  
﹘_ ×  
  注:以下的常见字符(键盘能够比较轻易敲击出来的)不能出现在ip和域地址格式中
 
·,~,`,!,!,@,@,$,%,^,&,*,(,(,),),
        =,+,-,【,[,],】,“,",",‘,’,/,、,,,,,》,>,<,《,?,|,\

前端js校验代码如下

写的low别笑话,但是很好使

//主机地址校验,增加了针对域地址合乎规范的检验
/**
*ip 包括hostname(新增)
*长度必须大于0
*172.|172.7  等类似的不规则应该避免掉(只包含数字和.符号的)
*域名中不应该存在的特殊字符,必须仔细的排除
*非ip格式的域地址的检测
*  
* 172.17  
*	ip或域地址串	合法性	校验测试
	127.0.0.1		√	√
	127.0 ×	√
	127.0x√	√
	127	×	√
	v	√	√
	vbs123√	√
	vb0.√	√
	.vb0.√	√
	.vb0.1√	√
	.vb0.a.1		√	√
	.vb0.s.1.2		√	√
*
*/
function verifyIPV4s(ip) {

	// 长度必须大于0,且不能是数字或者字符
	if (typeof (ip) == "undefined" || ip.length < 1) {
		return false;
	}


	// 172.  等类似的不规则应该避免掉(只包含数字和.符号的)
	var pure_num = /^[0-9]{0,60}$/;
	var pure_figure_flag = ip.match(pure_num);
	if (pure_figure_flag != undefined && pure_figure_flag != "" && pure_figure_flag != "null") {
		return false;
	}



	// 域名中不应该存在的特殊字符,必须仔细的排除
	var list_err = ['·','~','`','!','!','@','@','$','%','^','&','*','(','(',')',')',
		'=','+','-','【','[',']','】','“','"','"','‘','’','/','、',',',',','》','>','<','《','?','|','\\'];
	$.each(list_err, function(i, n){
		if(ip.indexOf(n) > 0){
		console.log(i, n);
		return false;
				}
	});

	// 只要其中有任意的英文字母,或者_ - 者皆视为域地址而非ip地址
	var exp = /^[0-9a-zA-Z-_.]{0,60}$/;
	var init_flag = ip.match(exp);
	if (init_flag != undefined && init_flag != "" && init_flag != "null") {
		// 首先判断是否符合ip地址格式,再判断是否符合域名格式
				    exp =
		/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
		var flag = ip.match(exp);
		if (flag != undefined && flag != "" && flag != "null") {
			return true;
		} else {

			// 如果输出的是172.7  等这样不完整的ip字段,但是还符合普通的域地址结构的,需要再次判断.符号左右是否全是数字
			var tmp_ip = ip.replace('.','0');
			// var dot_num=(tmp_ip.split('.')).length-1;
			var pure_num = /^[0-9]{0,60}$/;
			pure_figure_flag = tmp_ip.match(pure_num);
			if (pure_figure_flag != undefined && pure_figure_flag != "" && pure_figure_flag != "null") {
				console.log(tmp_ip);
				return false;
			}

			// 如果存在英文字母,-,_等字符说明为非ip 格式
			exp = /[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?|[a-zA-Z0-9][-a-zA-Z0-9]{0,62}/;
			flag = ip.match(exp);
			if (flag != undefined && flag != "" && flag != "null") {
				return true;
			} else {
				return false;
			}
		}
	}
}

注:以上的代码中有一个bug

如果输入的参数为ip地址格式的,但是ip地址不完整 比如172.1.2就结束了,检测会失败,因为,需要将。因为这样只会匹配替换第一个字符,一定要注意。

改为全字段匹配

var tmp_ip = ip.replace(/\./g,'0');

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章