`
Rainbow702
  • 浏览: 1078440 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类

IPv6的正则表达式【JAVASCRIPT】

阅读更多

大家都知道IPv4的正则表达式很好写,如下:

^((25[0-5]|2[0-4]\d|[0-1]?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|[0-1]?\d{1,2})$

 但是IPv6的格式相比较而言,就复杂了不止100倍啊,下面是IPv6格式的简单介绍:

Format is x:x:x:x:x:x:x:x
x is a 16 bit hexadecimal field
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
Leading zeros in a field are optional
:: can be used to represent multiple groups of 16 bits of zero
:: can only be used once in an address
FF01:0:0:0:0:0:0:101 = FF01::101
0:0:0:0:0:0:0:1 = ::1
0:0:0:0:0:0:0:0 = ::

 

不知道谁可以给出一个验证IPv6的正则表达式啊?或者,用迂回的方法也行,即可以通过代码进行判断。

在网上找到一个IPv6的表达式,如下:

 

^\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*$

 

但是这么复杂得无法进行判断啊。

 

 

我自己用JAVASCRIPT写了一个迂回的判断方法,如下,有问题,请指教:

// check whether the str is a right IPv6 address
function checkIPv6(str) {
	var idx = str.indexOf("::");
	// there is no "::" in the ip address
	if (idx == -1) {
		var items = str.split(":");
		if (items.length != 8) {
			return false;
		} else {
			for (i in items) {
				if (!isHex(items[i])) {
					return false;
				}
			}
			return true;
		}
	} else {
		// at least, there are two "::" in the ip address
		if (idx != str.lastIndexOf("::")) {
			return false;
		} else {
			var items = str.split("::");
			var items0 = items[0].split(":");
			var items1 = items[1].split(":");
			if ((items0.length + items1.length) > 7) {
				return false;
			} else {
				for (i in items0) {
					if (!isHex(items0[i])) {
						return false;
					}
				}
				for (i in items1) {
					if (!isHex(items1[i])) {
						return false;
					}
				}
				return true;
			}
		}
	}
}

// check whether every char of the str is a Hex char(0~9,a~f,A~F)
function isHex(str) {
	if(str.length == 0 || str.length > 4) {
		return false;
	}
	str = str.toLowerCase();
	var ch;
	for(var i=0; i< str.length; i++) {
		ch = str.charAt(i);
		if(!(ch >= '0' && ch <= '9') && !(ch >= 'a' && ch <= 'f')) {
			return false;
		}
	}
	return true;
}

 

分享到:
评论

相关推荐

    js:校验IPv6地址的正则表达式

    您可能感兴趣的文章:jquery 正整数数字校验正则表达式JavaScript正则表达式校验非零的正整数实例利用js正则表达式校验正数、负数、和小数Javascript校验密码复杂度的正则表达式最全的常用正则表达式大全——包括...

    url正则表达式

    使用URL正则表达式时,可能遇到的问题包括处理IP地址、IPv6地址、非ASCII字符、URL编码等。解决这些问题通常需要扩展基本的正则表达式,以适应更复杂的URL格式。 总结,URL正则表达式是网络开发中不可或缺的工具,...

    javascript正则表达式表单验证

    ### JavaScript正则表达式表单验证知识点解析 在Web开发中,前端表单验证是非常重要的一个环节,它能够有效提高用户体验并确保数据的有效性。JavaScript中的正则表达式是实现这一功能的重要工具之一。本文将根据...

    常用正则表达式

    ### 常用正则表达式知识点解析 #### 一、匹配中文字符的正则表达式 **表达式**: `[\u4e00-\u9fa5]` **应用场景**: - **文本处理**:在进行中文文本的搜索、过滤、替换等操作时非常有用。 - **数据验证**:例如在...

    javascript IP、域名、手机号码正则表达式验证代码

    JavaScript中实现对IP地址、域名、手机号码进行正则表达式验证的知识点如下: 1. IP地址验证 IP地址分为IPv4和IPv6两种,IPv4地址通常由四个0-255之间的数字组成,并由点号分隔。一个有效的IPv4地址的正则表达式为...

    common-regex:常用正则表达式的集合

    在JavaScript中,正则表达式被广泛应用于数据验证、字符串搜索和替换等场景。"common-regex"项目是一个集合了大量常见正则表达式的资源库,旨在方便开发者快速调用和应用。 1. **正则表达式基础** - **模式匹配**...

    Regular.Expressions.Cookbook.2009

    《正则表达式 Cookbook 2009》是一本专注于正则表达式的实用指南,它为程序员和数据处理专家提供了一系列解决常见问题的配方。这本书深入浅出地讲解了如何利用正则表达式进行文本匹配、查找、替换和提取等操作。在IT...

    js完整验证url网址实例

    这个正则表达式尽可能覆盖了大部分有效URL的形式,包括IPv4、IPv6、域名、路径、端口等。 5. **JavaScript验证函数** 使用上面的正则表达式,我们可以创建一个验证函数,如下所示: ```javascript function ...

    IP检测-JOSN 和正则解析IP 例子.zip_JSON_ip_josn_正则

    本话题将深入探讨如何利用JSON和正则表达式进行IP检测。 首先,让我们了解JSON(JavaScript Object Notation)。JSON是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器...

    IP地址输入正则验证ip插件.zip

    本文将详细解析"IP地址输入正则验证ip插件.zip"的相关知识点,包括IP地址的原理、正则表达式验证IP地址的方法、jQuery插件的运用以及自动换行的实现。 首先,IP地址(Internet Protocol Address)是互联网协议地址...

    网址有效性验证

    可以使用正则表达式进行初步验证,检查各部分是否存在,格式是否正确。例如,确保协议部分有"HTTP://"或"HTTPS://",域名部分符合域名规则,端口是可接受的数字范围等。 2. **DNS解析**:验证URL时,需要将其解析为...

    JavaScript猎取IP猎取的是IPV6 如何校验_.docx

    一个更全面的IPV6地址验证正则表达式可能更复杂,需考虑各种IPV6地址格式的细节,包括压缩的0、双冒号表示法等。 为了确保在JavaScript中正确处理IPV6地址,开发者需要熟悉IPV6地址的结构,理解位运算在计算网络...

Global site tag (gtag.js) - Google Analytics