作为一个新手学习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)
结果:
没有匹配。
我已验证正则表达式模式按预期工作。我错过了什么?
match
要求完整的字符串匹配。 - Wiktor Stribiżewmatch
需要完全匹配字符串不是唯一的问题,问题在于match
还要求模式中有一个捕获组。如果您不想指定组,则需要使用regex(_*) => println(ip)
来仅检查正则表达式是否与字符串匹配。基本上,解决方案是https://rextester.com/MPGK88781。 - Wiktor Stribiżew