OC 页码范围选择 用正则示怎么表达?

只能输入 1 或者1-5 或者1-6,2,2-3 这样的格式。有没有具体的方法啊?

阅读 3.2k
3 个回答

试试

^([1-9][0-9]*)+(\-[1-9][0-9]*)?$

这种需求最好不要使用正则,
直接判断就是.
简单使用 Swift 实现如下. (注意,代码我是直接在这里写的.可能有少量语法错误)
另外你自己再完善一下对于空白字符的兼容性.

func isValidPageRange(pageRange:String)-> Bool{
    let comps = pageRange.split(separator:"-")
    if comps.count > 2{
      return false
    }
    guard let start = Int(comps[0]) else{
      return false
    }
    if comps.count == 2{
      if let end = Int(comps[1]){
         return start <= end
      }else{
          return false
      }
    }
    return true
}

func isValidPageRanges(pagesStr:String) -> Bool{
  let comps = pagesStr.split(separator:",")
  for comp in comps{
    if !isValidPageRange(pageRange:comp){
    return false
    }
  }
  return true
}

^\d+(-\d+)?(,\d+(-\d+)?)*$ 应该可以

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题