开发者社区> 问答> 正文

大神求帮忙写个java正则表达式:报错

我有这么多个版本号,2.0.1,    3.0.1,       4.0.1.4,   4.0.6,  4.1.0.24,以后类推,都是4位版本号或3位版本号
如果我在页面上输入最小版本1.0.0,最大版本3.0.1
则匹配到上述2.0.1和3.0.1
如果最小是3.3.3 最大4.0.5
则匹配到4.0.1.4
意思是版本号是比较三位的
求大神写个正则,需求必须要正则,谢谢了

展开
收起
kun坤 2020-06-09 11:09:03 469 0
1 条回答
写回答
取消 提交回答
  • 我劝你一句,这个估计没几个人能搞定,你最好不要用正则了。(说实话,这种需求本身就不健康,虽然多年前我也遇到过类似的情况)
    如果非要用正则呢,也不是不可以,但是你这个需求比我之前遇到的要复杂,我可以给你一个“匹配两个整数之间范围”的正则,但是还需要额外的处理工作,估计你也做不了(因为 "." 之间的数字其实不是独立的,是依赖于前面的一个数字的,所以这就不好写了,很费脑细胞的)
    不过,你可以有另外一种选择:如果可以把版本号转换成一个数字的话就简单多啦,比如:2.1.3 => 2001003,但这需要存储的时候也按这种格式存储,或者额外存储一个这样的数字。并且 “.” 之间的数字要预留出足够的位数才行,但是这种方式足够简单,一行代码就可以搞定。
    最后,把代码贴出来:http://www.oschina.net/code/snippet_85589_19550,这是之前做页游写的,然后移植的 java 版,应该没问题,因为游戏 OK。
    提示:如果你用 2001003 这种方式的话,最好将代码中的 int 换成 long,这样才能支持足够大的位数。 ######谢谢,的确不好写,只有换种方式考虑了######需求还管怎么实现了?确实是需求不健康...

    2020-06-09 11:09:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载