技术标签: JAVA开发
工作中遇到一个需求,有个值域范围是0-65535之间,范围之间用“-”表示,可以用“,”间隔。示例:3-76,122-8888,9000-60000
废话不多说,先上代码
public static boolean checkValid(String input) {
String regex = "(([0-5]?\\d?\\d?\\d?\\d|6[0-4]\\d\\d\\d|65[0-4]\\d\\d|655[0-2]\\d|6553[0-5])-([0-5]?\\d?\\d?\\d?\\d|6[0-4]\\d\\d\\d|65[0-4]\\d\\d|655[0-2]\\d|6553[0-5])[,]?)*";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
boolean isOutLimit = true;
//如果以','结尾,删掉这个','
if (",".equals(input.substring(input.length() - 1))) {
input = input.substring(0, input.length() - 1);
}
if (input.split("\\,").length > 5) {
isOutLimit = false;
}
return (matcher.matches() && isOutLimit);
}
主要解释一下我写的正则表达式:
String regex = “(([0-5]?\d?\d?\d?\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5])-([0-5]?\d?\d?\d?\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5])[,]?)*”;
https://www.cnblogs.com/lzq198754/p/5780340.html
“/”是转义字符
[a-z]
字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。注意:只有连字符在字符组内部时,并且出现在两个字符之间时,才能表示字符的范围; 如果出字符组的开头,则只能表示连字符本身
?
匹配0或1个正好在它之前的那个字符。注意:这个元字符不是所有的软件都支持的。
\d
匹配一个数字字符。等价于[0-9]。
|
将两个匹配条件进行逻辑“或”(Or)运算。
(pattern)
匹配pattern并获取这一匹配。
匹配前面的子表达式任意次
所以([0-5]?\d?\d?\d?\d|6[0-4]\d\d\d|65[0-4]\d\d|655[0-2]\d|6553[0-5])我们就可以理解为
“[0-5]” 以是0到5开头的数字,
“?” 后面匹配0到1个,
“\d” 0到9的数字
“|” 或者
以6开头的数字,后一位是
“[0-4]” 以是0到4开头的数字,后一位是
“\d” 0到9的数字
…
以此类推可以匹配所有0到65535之间的数。
最后加了一个“”号,以为项目要求范围可以分段,可以用“,”间隔,所以加号匹配前面的子表达式任意次
前面正在介绍hibernate的开发教程,提到hibernate 在.Net 平台上相应的ORM工具为NHibernate ,使用NHibernate 就不能不提到CodeSmith。CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用
编程开发1)《effective java中文版》 2)《分布式java应用》 淘宝又见淘宝 3)《代码大全》像是一本百科全书,十八般武艺样样都有了。看了这本书,不会武功的也能耍一阵子。4)《java并发编程实践》不可多得并发编程的好书,在淘宝上面淘来的影印的。5)《java加密与解密的艺术》修练这种功夫还是需要的,毕竟这个世界给人...
最近有很多伙伴希望我能给一些关于python的就业指导;之前出过很多关于Python学习路线的就业指导方面文章,但是并不是很完善,所以希望这期关于python的就业指导能够很全面很详细的聊聊就业的那些事,以下都是个人经验和建议,如有偏差还望指正!一、就业方向不管做任何事,一开始就有一个方向会让你有很高的效率;大家都听说python几乎无所不能,那具体有哪些职位呢?测试开发工程师运维工程师...
前言bp的intruder模块有四种模式:Sniper、Battering ram、Pitchfork、Cluster bomb,接下来分别介绍一下四种模式的区别。1. Sniper (狙击手)可以理解为一个一个爆破这里选择sniper,然后标记name和pwd 两个参数payload set只能选一个,也就是字典只能设置一个,然后用字典替换选择的参数结果就是pwd为初始值(123)不变,pwd用字典遍历一遍,然后name为初始值(123)不变,pwd用字典遍历一遍。2. Batter
Python和Go都是用于编写Web应用程序的强大的高级编程语言,它们之间有什么区别吗?下面本篇文章就来带大家认识一下Python和Go语言,介绍一下Python和Go之间的区别,希望对大家有所帮助。什么是Python?Python是一种功能强大的高级编程语言,主要用于科学和工程计算。它是一种高效的语言,优雅务实,简单而强大,适合新手和专业人士的编程。Python支持多种编程范例,并提出了一个大型...
读了多少书?怎么读书?——请问大家最近读书了吗?一年大概读了多少本书。有超过20本,超过30本,超过50本吗?在7月14日由长沙互联网活动基地和长沙.NET技术社区组织的...
问题及代码:/* .*Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: 图书馆的书 .cpp *作 者:莉莉 *完成日期:2015年3月18日 *版 本 号:v1.0 *问题描述:设计一个三角形类,请给出各成员函数的定义 */ #include #include
malloc和free大量使用后回造成内存碎片,那么这种碎片形成的机理是什么?如果机理是申请的内存空间大小(太小)所形成的,那么申请多大的区域能够最大限度的避免内存碎片呢(这里的避免不是绝对的避免,只是一种概率)? 内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用.产生内存碎片的方法很简单,举个例: 假设有一块一共有100个单位的连
从终端输入10个数字(乱序),利用简单选择排序法对这10个数字排序,结果从小到大排列。#include<stdio.h>#define ARRAY_SIZE(buf) (sizeof(buf) / sizeof(buf[0]))void scanf_nu(int *buf, int n){ int i; for(i = 0; i < n; i++) scanf("%d",&buf[i]);}void swap(int *a, int
问一个简单的问题:如何加载一张图片?可能很多朋友会说使用Glide,Picasso等图片加载库来加载图片,或者使用BitmapFactory来加载图片。但是,大家应该知道,无论是使用Glide还是使用BitmapFactory加载图片,加载的图片都是需要做压缩的,不然会导致oom。那么,如果我不允许压缩,要加载一张高清的大图,那么如何实现?这就需要使用图片区域解码BitmapRegionDecoder
做个记录,改错后可以改回来
#import "BSTableViewController.h"#import "BSDetailViewController.h"@interface BSTableViewController ()UIViewControllerPreviewingDelegate,BSDetailViewControllerDelegate>@p