【问题标题】:Regex that only validates IPv6 address in javascript仅在 javascript 中验证 IPv6 地址的正则表达式
【发布时间】:2014-05-28 20:04:28
【问题描述】:

我需要一个仅在 Javascript 中验证 IPv6 地址的正则表达式。我尝试了以下两种方法,它们都在像 1:1:1:1:1:1:1:1 这样的字符串上失败

^([\dA-F]{1,4}:|((?=.*(::))(?!.*\3.+\3))\3?)([\dA-F]{1,4}(\3|:\b)|\2){5}(([\dA-F]{1,4}(\3|:\b|$)|\2){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})\z

^([0-9A-Fa-f]{0,4}:){2,7}([0-9A-Fa-f]{1,4}$|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4})$

【问题讨论】:

  • @ElliottFrisch 我不认为您的链接是重复的。除非我看错了,否则答案是针对 C# 的。
  • @xxbbcc:特别是那个问题的this answer
  • @sharth 你可能是对的 - 我没有仔细阅读每一个答案。
  • 为什么这个问题被否决了?

标签: javascript regex ipv6


【解决方案1】:

给你

[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}+:[0-9a-fA-F].{0,3}

糟糕,忘记将其设置为每段最多 4 个。

请注意,IP 地址有特定的组合,其中一些是无效的。但这将符合您的要求。

【讨论】:

  • -1 : 您的正则表达式无法接受作为 IPv6 环回地址的::1
  • 您确定要[...]{...} 之间的点吗?
  • 修复了 sharth 评论中的问题,谢谢。我对正则表达式的了解不足以解决 xxbbcc 的评论中提到的问题
  • @JosephDailey IPv6 地址相当复杂。我不会使用正则表达式来检查它们,而是使用适当的解析器。见en.wikipedia.org/wiki/IPv6_address
  • 我知道 ipv6 在一定程度上是如何工作的,但是当验证某个东西是用冒号分隔的 64 位十六进制值时,这就足够了。
猜你喜欢
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 2014-06-22
  • 1970-01-01
相关资源
最近更新 更多