關於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');

 

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