我找到了以下用于匹配逗号分隔的数字或数字范围的regex:
val reg = """^(\d+(-\d+)?)(,\s*(\d+(-\d+)?))*$""".r
reg.findAllIn("1-2, 3").map(s => s""""$s"""").toList
List("1-2, 3")
List("1-2", "3")
val list = "1-2, 3" match {
case Reg(groups @ _*) => groups
case _ => Nil
}
list.map(s => s""""$s"""")
List("1-2", "-2", ", 3", "3", "null")
使用findallin
时,不应尝试匹配整个字符串。它将被它能找到的最大的连续匹配所分裂。相反,您需要的只是Regex的一部分:
val reg = """(\d+(-\d+)?)""".r
如果将其与findallin
一起使用,它将返回所需内容。
scala> val x = """(\d+(-\d+)?)""".r
x: scala.util.matching.Regex = (\d+(-\d+)?)
scala> x.findAllIn("1-2, 3").toList
res0: List[String] = List(1-2, 3)
我需要验证逗号分隔的最小和最大数字限制的regex。我试过这个regex,但没有运气 我想要这样的列表(最小数字是1,最大数字是45)
我试图验证数字1-8的逗号分隔列表。
是有效输入。 无效 有效 无效 无效(只有7个数字) 我尝试了,但它接受重复的数字
我试图验证一个逗号分隔的数字列表1-31唯一(不重复)。 20、15、3 我尝试但是它接受重复的数字
作为前言,我意识到还有其他关于逗号分隔数字的正则表达式的主题,但当我试图使用这些解决方案时,它们都不起作用。