判断是否是有效的IPV4地址
参考链接:
https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113
http://www.cnblogs.com/txw1958/archive/2011/10/13/2210114.html
自己总结下:
(1) 正则表达式表示
首先,需要了解IP地址的基本格式。
IP地址的长度是32位,点分十进制表示分为4段,每段的范围是0~255. 例如:113.225.167.23 考虑每段的情况 有效的数字可以分为以下几种
1、一位数字 (0~9)
2、两位数字 (10~99)
3、三位数字
(1) “1” 开头 (100~199)
(2) "2"开头 (200~249 250~255)
对应正则表达式匹配如下:
数值范围 正则表达式匹配
0~9 \d
10~99 [1-9]\d
100~199 1\d\d
200~249 2[0-4]\d
250~255 25[0-5]
整合下:
/^\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]$/
由于任何以非零数字开头的数字 是有效的 上述表达式中头2部分可以合并
/^[1-9]?\d|1\d\d|2[0-4]\d|25[0-5]$/
那么可以得出完整的IPV4表示方法了
/^([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$/
这种 表示方法可能并不准确。因为有些解析器会接收前导0,比如解析127.0.0.001和127.0.0.1是一样的。而有的解析器会把前导0当做8进制前缀
更改下上述表达式:
/^0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])\.0*([1-9]?\d|1\d\d|2[0-4]\d|25[0-5])$/
当再次看到这表达式分析时,可能需要很久才能明白它的意思。
正则表达式擅长的是文本匹配,并不会进行数学运算。
更好的一种实现方式是使用JS代码来实现
function isDottedIPv4(s)
{
var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
return match != null &&
match[1] <= 255 && match[2] <= 255 &&
match[3] <= 255 && match[4] <= 255;
}
判断是否是有效的IPV4地址的更多相关文章
- 【转】获取手机的ipv4地址
http://blog.csdn.net/yueqinglkong/article/details/17391051 直接贴代码: public class GetLocalIpAddress ext ...
- [C#]判断是否是合法的IP4,IP6地址
判断一个字符串如果没有端口的话,利用IPAddress.TryParse很好判断,那么有端口怎么判断呢,正则表达式?还是其他方式? 关键代码: /// <summary> /// 判断是否 ...
- IPv4地址段、地址掩码、可用地址等常用方法
package com.xxx.iptools; import java.util.ArrayList; import java.util.HashMap; import java.util.List ...
- 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105138313 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 网络连接详细信息出现两个自动配置ipv4地址
问题:网络连接详细信息出现两个自动配置ipv4地址,一个是有效地址,一个是无效地址. 解决办法:先将本地连接ip设置成自动获取,然后点击开始——>运行——>输入cmd,回车,进入命令行界面 ...
- [转载]C#获取本机IPv4地址
C#获取本机IP地址在C#1.0之后都使用下面的这种形式: IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipa=i ...
- 用C语言实现ipv4地址字符串是否合法
用程序实现ipv4地址字符串是否合法,主要考察的是C字符串的操作. 搜索了下,网上没有特别好的实现,自己实现了下,见笑于大家,请指正. #include <stdio.h> #includ ...
- python网络编程——将IPv4地址转换成不同的格式
1.将IPv4地址转换为32位二进制格式,用做底层网络函数. import socket from binascii import hexlify def convert_IPv4_address() ...
- Windows8下通过IPv4地址访问Tomcat
最近在做Android开发,手机客户端需要通过IPv4地址访问电脑启动的Web应用服务. 在Windows 7不需要做什么设置,localhost,127.0.0.1或者192.168.0.100都可 ...
随机推荐
- 使用UltraISO制作U盘启动盘——转载
现在流行用U盘来安装系统,但要用U盘来安装系统的前提条件下是如何将镜像文件写入到U盘里,UltraISO能很好的满足你的需求. 步骤/方法 鼠标右键“以管理员身份运行”UltraISO图标 打 ...
- Flash导致弹出的div被隐藏
最近碰到一个问题,因为使用第三方的一个网页,那个网页是使用flash做的,我们在页面A中使用一个iframe导入他们的网页,页面A中有些按钮,点击弹出对应的弹出框,是easyui的模态弹出框.在我的浏 ...
- study notes for python
some useful materials Python完全新手教程 http://www.cnblogs.com/taowen/articles/11239.aspx (from taowen, B ...
- Java处理Excel整理篇
常用Excel,每次写的时候都得现查,索性做一个整理. Java里用的时候一般用jxl这个包,相对好用. 读: File file = new File(excelFile);Workbook boo ...
- 简单的block
int multi = 7; int (^myBlock)(int) = ^(int num){ return num * multi; ...
- 使用Linux碎解三_CentOS7搭建Lamp环境安装zabbix遇到的问题
问题一: 执行不了 yum命令 解决方案:配置系统的DNS(详细参见碎解二) 问题二: make 命令的时候,出现错误 提示 和没有gcc大体相关 解决方案:yum install gcc (在网 ...
- scala数组
#scala数组 val A= new Array[T](N) val A = new Array[Int](10) ##变长数组 import scala.collection.mutable.Ar ...
- 【python】函数之内置函数
Python基础 内置函数 今天来介绍一下Python解释器包含的一系列的内置函数,下面表格按字母顺序列出了内置函数: 下面就一一介绍一下内置函数的用法: 1.abs() 返回一个数值的绝对值,可以是 ...
- CC1310电源
CC1310的电源好扯,把目前遇到的问题记录一下 1 全局LDO和DCDC的输出电压问题 手册上要求的VDDR和VDDR_RF的电压范围是1.7~1.95V,但实际测试时, 在接收状态下无论是全局LD ...
- NLua - 基于Lua的C#脚本引擎
Nlua NLua is the bind between Lua world and the .NET world. NLua is a fork of project LuaInterface ( ...