簡體   English   中英

在 Scala 中匹配 IP 地址

[英]Matching an IP address in 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)

結果: No match.

我已驗證 Regex 模式按預期工作。

我在這里缺少什么?

有幾個問題:

  • 與完整 IP 地址不匹配的正則表達式問題。 您可以使用來自regular-expressions.info 的眾所周知的IP 地址驗證正則表達式
  • match需要完整的字符串匹配
  • match還需要模式中的捕獲組。 如果您不想指定組, regex() => println(ip)需要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 代碼演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM