【问题标题】:Understanding Java regular expression [duplicate]了解Java正则表达式[重复]
【发布时间】:2018-09-06 21:40:41
【问题描述】:

在我的项目中,我们有一个IPV 4 的正则表达式,下面是它的格式。

我无法理解它如何适合 IP。

private static final Pattern PATTERN = Pattern.compile(
        "^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");

我尝试使用在线工具 - https://regex101.com/ 了解它,但无法弄清楚它是如何工作的。

此 SO 中也给出了相同的解决方案 - Validate IPv4 address in Java

【问题讨论】:

  • 你不明白可能是因为它不起作用:ideone.com/WjUCF5
  • 这是有效的解决方案,也在这个 SO - stackoverflow.com/questions/5667371/… 中提到
  • @ifly6 System.out.println("192.168.0.10".matches("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$")); 为我返回 true...
  • @ifly6 您链接中的正则表达式与问题中的不一样。
  • 看一下图表:regexper.com/…。它应该可以帮助您理解([01]?\d\d?|2[0-4]\d|25[0-5]) 部分(它是X.X.X.X 处的X,可以表示为(X.){3}X

标签: java regex


【解决方案1】:

匹配 0 或 1 可选,然后是两个数字 (0-9),例如 0、122、99
或 2 然后是一位数字 0-4 然后是一位数字 (0-9) 例如 204、222
或 25,然后是 0-5 的一位数字,例如 250、255
然后是一个点 (.)
重复3次
然后是同样的事情,但只有一次并且最后没有点。

请注意,当您将其放入类似的工具中时,应将 \'s 更改为 \

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2014-01-20
    • 2023-03-12
    • 2023-03-11
    相关资源
    最近更新 更多