1
-1
如果我可以避开你的问题,请考虑使用你的网络库的地址概念来分析和检查错误。 我想在某个时候你会想对这些地址做些什么,那么为什么不直接去源代码处,确保你的网络库能够理解这个地址呢?这比仅仅希望这里发布的任何regex都符合您的实现的地址概念要好。
在爪哇,我们有
|
2
213
我无法得到@factor mystic使用posix正则表达式的答案,所以我编写了一个可以使用posix正则表达式和perl正则表达式的答案。 它应该匹配:
IPv6正则表达式:
为了便于阅读,下面是上面的正则表达式,将主表达式或点拆分为单独的行:
为了使上述内容更容易理解,以下“伪”代码复制了上述内容:
我在Github上发布了一个测试正则表达式的脚本: https://gist.github.com/syzdek/6086792 |
3
49
以下内容将验证IPv4、IPv6(完全和压缩)和IPV6v4(完全和压缩)地址:
|
4
23
从“ IPv6 regex “:
|
5
19
听起来您可能在使用Python。如果是这样,您可以使用类似的方法:
我认为你不需要把ipv6编译成python
|
6
8
我必须坚决支持 Frank Krueger . 虽然您说需要一个正则表达式来匹配IPv6地址,但我假设您真正需要的是能够检查给定字符串是否是有效的IPv6地址。这里有一个微妙但重要的区别。 有多种方法可以检查给定字符串是否是有效的IPv6地址,正则表达式匹配仅是一种解决方案。 如果可以,请使用现有库。这个库将有更少的错误,并且它的使用将导致更少的代码供您维护。 正则表达式由 Factor Mystic 长而复杂。它最有可能起作用,但是你也应该考虑如果它意外地失败了你将如何应对。我在这里要说明的一点是,如果你不能自己形成一个必需的正则表达式,你就不能很容易地调试它。 如果没有合适的库,最好编写自己的不依赖正则表达式的IPv6验证例程。如果你写了它,你就会理解它,如果你理解了它,你可以添加注释来解释它,这样其他人也可以理解它,并随后对它进行维护。 使用不能向其他人解释其功能的正则表达式时,请小心操作。 |
7
7
我不是ipv6专家,但我认为您可以更轻松地获得非常好的结果:
回答“是一个有效的ipv6”,我觉得没问题。把它分成几部分…算了吧。我省略了未指定的地址(::),因为在我的数据库中没有“未指定地址”的用处。
开始:
然后:
|
8
7
此正则表达式将根据正则表达式的GEU C++实现与有效的IPv6和IPv4地址相匹配,并使用常规扩展模式:
|
9
4
当心! 在Java中,使用iNETAdvor和相关类(iNET4Advess,iNET6Advess,URL)可能涉及网络传输! 例如,DNS解析(url.equals,inetaddress from string!)。此呼叫可能需要很长时间,正在阻塞! 对于ipv6,我有类似的东西。当然,这并不能处理非常细微的IPv6细节,比如只允许在某些类别的IPv6地址上使用区域索引。这个regex不是为组捕获而编写的,它只是一种“匹配”的regexp。
示意图(第一部分使用IPv4后缀匹配IPv6地址,第二部分使用IPv6地址,最后一部分使用区域索引):
这里可能是regex(不区分大小写,围绕着任何需要的内容,如行首/行尾等):
|
10
3
如果使用Perl,请尝试 Net::IPv6Addr
|
11
3
这将捕获环回(::1)以及IPv6地址。 将改为+并将:放在第一个方括号内。
用ifconfig-a输出测试 http://regexr.com/ Unix或Mac OSX终端O选项仅返回匹配的输出(IPv6),包括::1
获取所有IP地址(IPv4或IPv6)并在Unix OSX终端上打印匹配
|
12
2
一个简单的regex将匹配,但我不建议任何类型的验证是:
注意,这与地址中任何位置的压缩都匹配,尽管它与环回地址::1不匹配。我觉得这是一个合理的妥协,以保持regex简单。 我在ITerm2中成功地使用了这个 智能选择规则 要四选一,请单击IPv6地址。 |
13
2
在 斯卡拉 使用著名的ApacheCommons验证器。 http://mvnrepository.com/artifact/commons-validator/commons-validator/1.4.1
遵循方法的测试
|
14
1
很难找到适用于所有IPv6情况的正则表达式。它们通常很难维护,不容易读取,并且可能导致性能问题。因此,我想分享一个我开发的替代解决方案: Regular Expression (RegEx) for IPv6 Separate from IPv4 现在您可能会问,“此方法仅查找IPv6,如何在文本或文件中查找IPv6?”这里也有解决这个问题的方法。 注释 :如果不想在.NET中使用IPAddress类,也可以将其替换为 my method . 它还包括映射的IPv4和特殊情况,而IP地址不包括。
|
15
1
看看其他答案中包含的模式,有许多好的模式可以通过引用组和使用lookaheads来改进。下面是一个自引用模式的示例,如果必须这样做,我将在PHP中使用它:
注: PHP有一个内置的过滤器,这将是一个比这个更好的解决方案 模式。 |
16
1
使用红宝石?试试这个:
|
17
1
根据您的需要,近似值如下:
可能足够了(例如,使用简单的日志文件grepping)。 |
18
1
以下regex仅适用于IPv6。组1与IP匹配。
|
19
0
在爪哇,可以使用图书馆类。
|
20
0
对于php 5.2+用户
我知道这并不能回答最初的问题(特别是一个regex解决方案),但是我把它贴出来,希望将来它能帮助其他人。
|
21
0
这将适用于IPv4和IPv6:
|
22
0
|
23
0
这就是我的想法,使用了一些前瞻性和命名组。这当然只是ipv6,但是如果您想添加ipv4,它不应该干扰其他模式:
|
24
0
你可以使用 the ipextract shell tools 我是为这个目的而做的。它们基于regexp和grep。 用途:
|
25
0
我使用python生成了以下内容,并与re模块一起工作。前瞻性断言确保地址中出现正确数量的点或冒号。它不支持IPv6表示法中的IPv4。
|
26
0
只需将源代码中的本地代码与方括号进行匹配即可。我知道它没有那么全面,但是在javascript中,其他的很难跟踪问题,主要是那些不工作的问题,所以这似乎让我得到了我现在需要的东西。也不需要额外的大写字母a-f。
金科的版本简化了,我看得更好。 |
27
0
如上所述,获取ipv6文本表示的另一种方法 验证 解析器将使用编程。这里有一个完全符合RFC-4291和RFC-5952。我用ANSIC编写了这段代码(与GCC一起工作,在Linux上通过了测试-与Clang一起工作,在FreeBSD上通过了测试)。因此,它只依赖于ANSIC标准库,因此可以在任何地方编译(我已经使用它在具有freebsd的内核模块中进行了IPv6解析)。
|
28
0
当您考虑具有嵌入式IPv4的地址和压缩的地址时,IPv6的regex可能会变得非常棘手,从这些答案中可以看到。 The open-source IPAddress Java library 将验证ipv6和ipv4的所有标准表示,并支持前缀长度(以及验证前缀长度)。免责声明:我是那个图书馆的项目经理。 代码示例:
|
29
-1
试试这个小的一衬。它应该只匹配有效的未压缩/压缩的IPv6地址(没有IPv4混合)
|
30
-2
regex允许在IPv4部分使用前导零。 一些unix和mac发行版将这些段转换为八进制。
我建议使用
|
Gagan_iOS · Apple App Store IPV6要求 6 年前 |
Li Jinyao · 如何使用route命令配置默认ipv6路由 7 年前 |
Shir · 通过特定网络接口发送IPv6多播数据包 7 年前 |
vdTOG · 使用IPv6 IP地址重写规则不起作用 7 年前 |