利用正则表达式匹配浮点型数据


Posted in Java/Android onMay 30, 2022

前言:

在开发中我们常常会使用到正则表达式,但很奇怪的是,每次你在使用正则表达式的时候你都发现你不会写,不知道语法,可能你大概还记得一部分,但很模糊,对于正则表达式的语法真心记不住,别的程序猿是不是我不清楚,但我是就是这样子,每次写都会发现记不住了,然后又去网上查找资料,又进行一次学习,慢慢的发现基本语法你又会了,但实际上你还是不会,可能是没有完全明白或者在实际开发中没有长期的使用导致,今天写这篇文章纯属唠嗑,其余的差不多都是复制粘贴了,另外说一下最近这一次翻开正则表达式去匹配浮点型数据做的一点思路,这一点和之前的是不一样的。以前写的正则去匹配浮点型的时候会发现无法完全正确的匹配,找了网上不少的高手或者菜鸟教程直接抄过来使用,发现其实都是有问题的,问题出在哪儿呢,大部分出现的问题都是在处理"0"和".“的情况下。你可能忘记了,我可以帮大家会议一下,当然大部分还是对的,但是如果出现以0开头的时候,你会发现,我可以输入n个0开头也能匹配出来,虽然有点会把连续的多个0开头的部分丢掉,但还是让人感觉匹配的不是很好,我有强迫症,这种匹配我认为是不正确的,另外就是”.",当你使用"."的时候,你会发现"xxxx."像这种格式的都能匹配,这是在逗我吗,难道这也算正确的,这种情况我会直接否认掉,但是在以往的开发中,我为了完后任务,当然也就不管了,没那么严格,对于上面出现的这几种情况我都心有不甘的默认了,毕竟开发需要的时间不能都花在搞这种问题上,时间那么有限,所以我当然就默许了这种问题的存在。今天呢又来搞了搞正则,还是相同的东西,我想自己写了,所以自己开搞了,废话有点多了,接下来就进入主题吧。

正则表达式

1、非负浮点型:(^[1-9]\d*\.\d+$|^0\.\d+$|^[1-9]\d*$|^0$)

2、浮点型:(^-?[1-9]\d*\.\d+$|^-?0\.\d+$|^-?[1-9]\d*$|^0$)

上面的正则是怎么写的呢?我来讲一讲

将浮点型数据做拆分,为啥要拆分呢,因为不拆分很难实现匹配浮点型字符串的正确格式

拆分成4类

1、非0开头的浮点型(123.12)
2、0开头的浮点型(0.12)
3、非0整数型
4、0

分别正则表达式

1、^[1-9]\d*\.\d+$
2、^0\.\d+$
3、^[1-9]\d*$
4、^0$

最后将4个表达式组合到一个中就得到最终的结果

(^[1-9]\d*\.\d+$|^0\.\d+$|^[1-9]\d*$|^0$)

浮点型是存在正负数的,所以还需要给得到的正则表达式添加符号

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

语法解析

符号 描述
^ 以什么开头
$ 以什么结尾
. 匹配任意非\n的单字符
\. 匹配.
+ 匹配一次或多次
* 匹配0次或多次
? 匹配0次或1次
x|y 表示匹配x或者y
{n} 表示匹配n次
[1-9] 表示范围1至9的任意1个数字
() 强制优先级,匹配括号需要在括号前加"\"
- 表示负号

Java代码

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches {
	public static void main(String args[]) {
		String str = "";
		String pattern = "(^[1-9]\\d*\\.\\d+$|^0\\.\\d+$|^[1-9]\\d*$|^0$)";

		Pattern r = Pattern.compile(pattern);
		Matcher m = r.matcher(str);
		System.out.println(m.matches());
	}

}

附:正则表达式(同时匹配整型数和浮点数)

pattern="^[1-9]*[0-9]?(\.[0-9]{1,2})?$"

总结

到此这篇关于利用正则表达式匹配浮点型数据的文章就介绍到这了!


Tags in this post...

Java/Android 相关文章推荐
Java数据结构之链表相关知识总结
Jun 18 Java/Android
一篇文章带你复习java知识点
Jun 28 Java/Android
Java Kafka 消费积压监控的示例代码
Jul 01 Java/Android
浅谈Java父子类加载顺序
Aug 04 Java/Android
Java中try catch处理异常示例
Dec 06 Java/Android
springboot中的pom文件 project报错问题
Jan 18 Java/Android
SSM项目使用拦截器实现登录验证功能
Jan 22 Java/Android
Java Spring Boot 正确读取配置文件中的属性的值
Apr 20 Java/Android
java版 联机五子棋游戏
May 04 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Android开发EditText禁止输入监听及InputFilter字符过滤
Jun 10 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 #Java/Android
Java时间工具类Date的常用处理方法
May 25 #Java/Android
Java实现扫雷游戏详细代码讲解
多线程Spring通过@Scheduled实现定时任务
May 25 #Java/Android
SpringBoot全局异常处理方案分享
May 25 #Java/Android
Java数据结构之堆(优先队列)
May 20 #Java/Android
Java中Dijkstra(迪杰斯特拉)算法
You might like
PHP 函数语法介绍一
2009/06/14 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
PHP进程通信基础之信号
2017/02/19 PHP
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
javascript import css实例代码
2008/07/18 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
Javascript核心读书有感之类型、值和变量
2015/02/11 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Python实现字典依据value排序
2016/02/24 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python修改txt文件中的某一项方法
2018/12/29 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python多线程thread及模块使用实例
2020/04/28 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
室内设计专业个人的自我评价
2013/12/18 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL