关于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');

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值