java 用正则表达式处理常见问题_java使用正则\d报错-程序员宅基地

技术标签: JAVA开发  

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之间的数。
最后加了一个“”号,以为项目要求范围可以分段,可以用“,”间隔,所以加号匹配前面的子表达式任意次

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31121267/article/details/104678152

智能推荐

python导出csv不带引号的句子_不带双引号写入CSV文件-程序员宅基地

文章浏览阅读395次。我的输入文件格式为:K100, radioactive 126, liquid 503, pour 2014, onto 992, sealed 9876, drum 15306K200, radioactive 558, liquid 1569, pour 5325, onto 772, sealed 9773, drum 10430K300, radioactive 463, liquid 1..._csv 不写入引号

显著性目标检测模型评价指标(一)——平均绝对误差:Mean Absolute Error(MAE)-程序员宅基地

文章浏览阅读4.8w次,点赞10次,收藏77次。显著性目标检测模型评价指标 之 平均绝对误差(MAE)原理与实现代码目录显著性目标检测模型评价指标 之 平均绝对误差(MAE)原理与实现代码目录一、显著性目标检测简介显著性目标(Salient Object):显著性目标检测(Salient Object Detection):评价指标(Evaluation Metrics):二、Mean Absolute Erro...

matlab图片插值数据_图像插值算法及其实现-程序员宅基地

文章浏览阅读3.8k次。sensor、codec、display device都是基于pixel的,高分辨率图像能呈现更多的detail,由于sensor制造和chip的限制,我们需要用到图像插值(scaler/resize)技术,这种方法代价小,使用方便。同时,该技术还可以放大用户希望看到的感兴趣区域。图像缩放算法往往基于插值实现,常见的图像插值算法包括最近邻插值(Nearest-neighbor)、双线性插值(Bil..._图像插值算法matlab

弱口令爆破 Tools-1-程序员宅基地

文章浏览阅读1.5k次。弱口令爆破工具hydra单个IP爆破还是比较好用的windows / kali / linuxwindows 直接从github上进行下载,使用时双击.exe会闪退,需要在目录下新建一个cmd.bat的执行文件,里面的内容为:cmd.exe 。使用时直接双击cmd.bat即可。linux 也是github上面下载压缩包,具体下载安装教程请自行百度,我直接就用kali了,所以这个不过多赘述。kali 直接集成了此工具。使用参数网上大家搜索到的都是一样的,不会的参数help查询一下用法。-

Delphi XE程序设计系列 1-主从架构, 多层到JSON和REST-程序员宅基地

文章浏览阅读130次。从桌面开发,主从架构,一直到多层架构,虽然都是广泛被接受的观念和技术,但在信息技术的实作上却从不是开放, 相容的世界。Delphi从桌面开发到主从架构都是使用自己的数据传递格式以及通讯传递架构,到了多层架构虽然使用了Windows平台上的通讯协议,例 如COM/DCOM/COM+,但是在传递的数据格式方面仍然是使用自己的架构,COM/DCOM/COM+也是MS专属的通讯协议,和其它平台上使用的 通..._delphi xe 主从表

ASP.Net请求处理机制初步探索之旅 - 管道_.net 网关请求 与 管道请求的区别-程序员宅基地

文章浏览阅读308次。一、所谓“请求处理管道”  HttpApplication对象是ASP.NET中处理请求的重要对象,但是,这种类型的对象实例不是由程序员来创建的,而是由ASP.NET帮助我们创建的。为了便于扩展处理工作,HttpApplication采用处理管道的方法进行处理,将处理的过程分为多个步骤,每个步骤通过事件的形式暴露给程序员,这些事件按照固定的处理顺序依次触发,程序员通过编写事件处理方法就可以_.net 网关请求 与 管道请求的区别

随便推点

Mac 安装natapp_mac上如何安装natapp-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏3次。看了一些教程,但是和我实际操作有些出入,所以进行了新的总结。希望能帮到大家!1 官网下载NATAPP-内网穿透 基于ngrok的国内高速内网映射工具我的mac是64位的,如何判断mac是64还是32下载后解压到文件夹,命名为natapp2 注册账号,并购买一个隧道,可以参考我后面附的「参考链接2」3 下载配置文件,将其与步骤1下载的app,一起放到你的文件夹里面。使用本地配置文件config.ini - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具4..._mac上如何安装natapp

关于React引入组件报错_you likely forgot to export your component from th-程序员宅基地

文章浏览阅读2.5k次。错误信息 Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might hav_you likely forgot to export your component from the file it's defined in, or

使用jave(ffmpeg)将.amr音频转码成mp3_jave-nativebin-win64-程序员宅基地

文章浏览阅读1.5k次。微信上的语音文件拿下来都是amr格式的,好像不分安卓和苹果。ffmpeg这个工具可以实现音频、视频的格式转换。java这里,有个现成的包jave,groupId是ws.schild在maven库里可以看到ws.schild其下有好几个包jave-corejave-nativebin-win32jave-nativebin-win64jave-nativebin-linux32jave-nativebin-linux64jave-nativebin-osx64jave-all-d_jave-nativebin-win64

使用爬虫获取谷歌自然搜索结果_google搜索结果爬虫-程序员宅基地

文章浏览阅读944次。当今信息时代,海量数据蕴藏着无尽的商机与价值。作为网络爬虫爬取谷歌自然搜索结果,可以帮助我们快速获得关键信息,为业务决策提供有效支持。然而,爬取数据并不是一项简单的任务。_google搜索结果爬虫

使用Grafana + simpod-json-datasource快速搭建数据看板_grafana看板如何配置后端接口-程序员宅基地

文章浏览阅读2.1k次。数据看板在很多时候都有使用,比如运维可视化监控,交易数据的实时展示,人流量的展示等,都需要有数据看板。这里教大家使用Grafana+simpod-json-datasource快速搭建数据看板。Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;2、数据源:Graphite,I_grafana看板如何配置后端接口

跨平台之uni-app_uniapp打包上架需要钱么-程序员宅基地

文章浏览阅读2.4k次,点赞3次,收藏3次。文章目录起源什么是uni-app为什么选择uni-app呢?快速体验开发工具创建uni-app运行uni-app发布uni-app打包为原生App发布为H5发布为小程序总结起源在我司业务不断快速发展的情况下,同时保证成本的增加,而选择考虑跨平台的解决方案。原本微信小程序其实算是跨平台了,但是近来微信小程序的审核速度堪忧,从最开始的半小时到现在的两三天都不一定过,所以移动端也不能完全抛弃,毕竟..._uniapp打包上架需要钱么

推荐文章

热门文章

相关标签