regex - 在 Scala 中匹配 IP 地址

标签 regex scala

Scala 新手,我编写了这段代码来匹配 IP 地址,但结果为“不匹配”。

val regex = """^(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))((\.(([0-9])|([1-9][0-9])|(1([0-9]{2}))|(2[0-4][0-9])|(25[0-5]))){3})$""".r
val i = "10.20.30.40"

def isValidIP(ip: String) = ip match {
    case regex(ip) => println(ip)
    case _ => println("No match.")
 }

isValidIP(i)

结果:不匹配。

我已验证正则表达式模式按预期工作。

我在这里错过了什么?

最佳答案

有几个问题:

  • 您的正则表达式问题does not match完整的 IP 地址。您可以使用众所周知的 IP address validation regex来自 regular-expressions.info。
  • match 需要完整的字符串匹配
  • match 还需要模式中的捕获组。如果您不想指定组,您需要 regex() => println(ip) 来检查正则表达式是否匹配字符串。

您可以使用

修复您的代码
val regex = """(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)""".r
val i = "10.20.30.40"

def isValidIP(ip: String) = ip match {
    case regex() => println(ip)
    case _ => println("No match.")
}

isValidIP(i)

参见 Scala code demo .

关于regex - 在 Scala 中匹配 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64185370/

相关文章:

php - 使用 regex 或 php 函数获取 ":"(冒号)之前的所有字符

Java 正则表达式验证\[]

scala - 用于 Ocaml 和其他语言的基于 Actor 的分布式并发库

scala - 如何在Scala中用更少的括号写f(g(h(x)))?

Scala map : mysterious syntactic sugar?

xml - 使用具有多个属性的 scala-xml API 进行解析

java - 正则表达式保留空输入

正则表达式 ;) 笑脸

regex - Perl 和 Regex - 从 .csv 解析值

eclipse - 在 Maven 项目中使用 HiveContext