【问题标题】:Backreferences to capturing group instead of captured result [duplicate]反向引用捕获组而不是捕获的结果[重复]
【发布时间】:2014-07-11 19:47:49
【问题描述】:

我想使用正则表达式来检查给定的字符串是否是 IP 地址。我的第一个想法是^([0-2][0-9]{1,2}|[0-9]{1,2})\.\1\.\1\.\1$,但后来我记得反向引用是引用捕获组的结果。所以我的解决方案适用于192.192.192.192168.168.168.168178.178.178.178 等IP 地址。 是否有另一种类型的反向引用引用捕获组的正则表达式而不是引用捕获组的结果? 有没有比连续使用四次([0-2][0-9]{1,2}|[0-9]{1,2})\. 更好的方法?还是 .NET Framework 提供了检查字符串是否为 IP 的函数?

【问题讨论】:

  • 你可以说我的问题是重复的,但我想我还问了一些问题,不是吗?

标签: c# ip backreference


【解决方案1】:

你可以使用

IPAddress.TryParse

【讨论】:

  • 听起来合乎逻辑,但此函数将192192.168 等字符串视为IP 并为它们返回true。
  • @Cubinator73 阅读链接答案中的 cmets。您也可以将上述方法与例如192.168.1.1".Count(x => x == '.') == 3; 结合使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
相关资源
最近更新 更多