参考链接:

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地址的更多相关文章

  1. 【转】获取手机的ipv4地址

    http://blog.csdn.net/yueqinglkong/article/details/17391051 直接贴代码: public class GetLocalIpAddress ext ...

  2. [C#]判断是否是合法的IP4,IP6地址

    判断一个字符串如果没有端口的话,利用IPAddress.TryParse很好判断,那么有端口怎么判断呢,正则表达式?还是其他方式? 关键代码: /// <summary> /// 判断是否 ...

  3. IPv4地址段、地址掩码、可用地址等常用方法

    package com.xxx.iptools; import java.util.ArrayList; import java.util.HashMap; import java.util.List ...

  4. 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105138313 学习课程:<2019王道考研计算机网络> 学习目的 ...

  5. 网络连接详细信息出现两个自动配置ipv4地址

    问题:网络连接详细信息出现两个自动配置ipv4地址,一个是有效地址,一个是无效地址. 解决办法:先将本地连接ip设置成自动获取,然后点击开始——>运行——>输入cmd,回车,进入命令行界面 ...

  6. [转载]C#获取本机IPv4地址

    C#获取本机IP地址在C#1.0之后都使用下面的这种形式: IPHostEntry ipe = Dns.GetHostEntry(Dns.GetHostName()); IPAddress ipa=i ...

  7. 用C语言实现ipv4地址字符串是否合法

    用程序实现ipv4地址字符串是否合法,主要考察的是C字符串的操作. 搜索了下,网上没有特别好的实现,自己实现了下,见笑于大家,请指正. #include <stdio.h> #includ ...

  8. python网络编程——将IPv4地址转换成不同的格式

    1.将IPv4地址转换为32位二进制格式,用做底层网络函数. import socket from binascii import hexlify def convert_IPv4_address() ...

  9. Windows8下通过IPv4地址访问Tomcat

    最近在做Android开发,手机客户端需要通过IPv4地址访问电脑启动的Web应用服务. 在Windows 7不需要做什么设置,localhost,127.0.0.1或者192.168.0.100都可 ...

随机推荐

  1. bash coding to changeNames

    ____通配符和正则表达式 此处的定义只针对linux 中的shell语言,对其它语言不适用 _正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配.grep.awk.sed等命令可以支持正则表 ...

  2. HTML5标签的3大类型

    1>块级标签: 独占一行的标签,能随时设置宽度和高度 比如:div.p.h1.h2.u1.li 2>行内标签(内联标签): 多个行内标签能同时显示在一行,宽度和高度取决于内容的尺寸 比如: ...

  3. 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 ...

  4. Spring+springmvc+Mybatis整合案例 annotation版(myeclipse)详细版

    Spring+springmvc+Mybatis整合案例 Version:annotation版 文档结构图: 从底层开始做起: 01.配置web.xml文件 <?xml version=&qu ...

  5. NFS实践练习

    实践要求: (CentOS 7)两台主机A/B,其中A主机搭建LAMP环境,B主机当做NFS服务器存放Mariadb的数据,并部署Discuz做测试,实现数据库可用. A主机:httpd2.4 php ...

  6. thinkphp model模块

    1.获取系统常量信息的方法:在控制器DengLuController里面下写入下面的方法,然后调用该方法. public function test() { //echo "这是测试的&qu ...

  7. (转载)自动化基础普及之selenium是啥?

    转载:http://www.cnblogs.com/fnng/p/3980093.html Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻 ...

  8. errorlevel

    ------siwuxie095 errorlevel 程序返回码 用法:echo %errorlevel% 查看当前程序返回码(即返回值),以知道程序或命令行是否执行成功. DOS在执行完后都有返回 ...

  9. win10使用小技巧以及常见问题处理方案

    1.win10开机一直处于黑屏状态或者反复重启怎么处理? 处理小方法:开机按win+X组合件进入高级修复模式---选择修复开启模式---f4进入安全模式开机状态---管理控制面板---禁用或者卸载显卡 ...

  10. ww

    #!bin/python #coding=utf-8 """ Create by he """ import sys import re i ...