判断是否是有效的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都可 ...
随机推荐
- bash coding to changeNames
____通配符和正则表达式 此处的定义只针对linux 中的shell语言,对其它语言不适用 _正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表 ...
- HTML5标签的3大类型
1>块级标签: 独占一行的标签,能随时设置宽度和高度 比如:div.p.h1.h2.u1.li 2>行内标签(内联标签): 多个行内标签能同时显示在一行,宽度和高度取决于内容的尺寸 比如: ...
- nullcon HackIM 2016 -- Crypto Question 1
You are in this GAME. A critical mission, and you are surrounded by the beauties, ready to shed thei ...
- Spring+springmvc+Mybatis整合案例 annotation版(myeclipse)详细版
Spring+springmvc+Mybatis整合案例 Version:annotation版 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version=&qu ...
- NFS实践练习
实践要求: (CentOS 7)两台主机A/B,其中A主机搭建LAMP环境,B主机当做NFS服务器存放Mariadb的数据,并部署Discuz做测试,实现数据库可用. A主机:httpd2.4 php ...
- thinkphp model模块
1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...
- (转载)自动化基础普及之selenium是啥?
转载:http://www.cnblogs.com/fnng/p/3980093.html Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻 ...
- errorlevel
------siwuxie095 errorlevel 程序返回码 用法:echo %errorlevel% 查看当前程序返回码(即返回值),以知道程序或命令行是否执行成功. DOS在执行完后都有返回 ...
- win10使用小技巧以及常见问题处理方案
1.win10开机一直处于黑屏状态或者反复重启怎么处理? 处理小方法:开机按win+X组合件进入高级修复模式---选择修复开启模式---f4进入安全模式开机状态---管理控制面板---禁用或者卸载显卡 ...
- ww
#!bin/python #coding=utf-8 """ Create by he """ import sys import re i ...