判断是否是有效的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都可 ...
随机推荐
- vim的一些配置
所有用户的共同配置位于 /etc/vimrc 或者 /ect/vim/vimrcz中,可能还会有其他的配置文件,例如vimrc.tiny,具体的应用场景文件内会有说明. 某个特定用户的vim配置位于 ...
- linux 学习6 软件包管理 资料链接
软件包管理 这一章看得比较随意 先大概记点东西. RPM安装很繁琐,因为依赖性,手动安装太麻烦. ______我觉得直接yum在线安装就好了,很直接方便. 但是要特别注意的地方 在用yum升级或者卸载 ...
- Linux系统yum命令安装软件时保留(下载)rpm包 -- 转载
昨天在部署zabbix监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用.而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有外网的服务器的yum命令来安装这些软件,并自 ...
- .net Session 超时控制
webconfig里明明设置了timeout是很大的数值了,可是session的有效性仍然无法维持一小时. 查了一下,主要是说 mode="InProc" 的话,session是放 ...
- XML数据 JSON数据 LitJSON 数据 的编写和解析 小结
用XML生成如下数据<?xml version="1.0"encoding="UTF-8"?><Transform name="My ...
- 【SVN】Error running context: 由于目标计算机积极拒绝,无法连接
SVN服务没开启,步骤如下: 1.打开[控制面板]→[管理工具]→[服务]: 2.找到[visual SVN Sever],右击选择[启动]: 3.服务开启后,导入数据就成功了!
- Altium Designer15 卡在登陆界面解决办法:
Altium Designer15 卡在登陆界面解决办法: 在我的电脑系统盘中找到下面目录(注:如果看不到,需要取消隐藏文件选项.) C:\Documents and Settings\Adminis ...
- 在Android中使用Java 8的lambda表达式
作为一名Java开发者,或许你时常因为缺乏闭包而产生许多的困扰.幸运的是:Java's 8th version introduced lambda functions给我们带来了好消息;然而,这咩有什 ...
- Android 7.0 UICC 分析(一)
UICC(Universal Intergrated Circuit Card) 框架 * Following is class diagram for uicc classes: * * UiccC ...
- errorlevel
------siwuxie095 errorlevel 程序返回码 用法:echo %errorlevel% 查看当前程序返回码(即返回值),以知道程序或命令行是否执行成功. DOS在执行完后都有返回 ...