`
wangyanlong0107
  • 浏览: 502359 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】Java判断是否是整数,小数或实数的正则表达式

    博客分类:
  • java
 
阅读更多

经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数。

    网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2这样的数字实际上会返回false,可是,他的确是一个数字。

 

[java] view plaincopy
 
 
 
  1. public static boolean isNumeric(String str) {  
  2.         if (str == null) {  
  3.             return false;  
  4.         }  
  5.         int sz = str.length();  
  6.         for (int i = 0; i < sz; i++) {  
  7.             if (Character.isDigit(str.charAt(i)) == false) {  
  8.                 return false;  
  9.             }  
  10.         }  
  11.         return true;  
  12.     }  

   当然,网上还能查到很多其他方式,诸如用正则表达式判断是否0-9,用字符ascii码判断是否是数字以及用Double.parseDouble()是否抛出异常来判断是否为数字。

 

   事实上,除了最后一种方式能达到我们的要求,其他的都很难真正做到类似的判断。但是最后一种方式也很难区别出到底是正整数,负整数,正小数还是负小数,而且,捕获异常的方式实在是有些难看。

   基于此原因,我自己写了一个工具类,专门用作数的检测,目前能够检测正整数,负整数,整数,正小数,负小数,小数以及实数,采用的仍然是正则表达式的方式,当然,如果有遗漏或者错误,欢迎联系我以便更正,同时也欢迎修改或使用这些代码以便符合你的应用场景。

   可以简单讲下正则的思想以便修改,

   1. 对于正整数而言,可以带+号,第一个数字不能为0

   2. 对于负整数而言,必须带负号,第一个数字也不能为0

   3. 对于整数而言,实际是由0,正整数和负整数组成的,所以偷个懒用前两个方法一起判断

   4. 对于正小数而言,可以考带+号,并考虑两种情况,第一个数字为0和第一个数字不为0,第一个数字为0时,则小数点后面应该不为0,第一个数字不为0时,小数点后可以为任意数字

   5. 对于负小数而言,必须带负号,其余都同上

   6. 对于小数,可以带正负号,并且带小数点就行了,但是至少保证小数点有一边不为空,所以这里还是分左边不为空和右边不为空的情况

   7. 实数比较简单,,要么是整数,要么是小数

 

[java] view plaincopy
 
 
 
  1. package com.sap.cesp.creditinsight.web.app.util;  
  2.   
  3. import java.util.regex.Matcher;  
  4. import java.util.regex.Pattern;  
  5.   
  6. public class NumberValidationUtils {  
  7.       
  8.     private static boolean isMatch(String regex, String orginal){  
  9.         if (orginal == null || orginal.trim().equals("")) {  
  10.             return false;  
  11.         }  
  12.         Pattern pattern = Pattern.compile(regex);  
  13.         Matcher isNum = pattern.matcher(orginal);  
  14.         return isNum.matches();  
  15.     }  
  16.   
  17.     public static boolean isPositiveInteger(String orginal) {  
  18.         return isMatch("^\\+{0,1}[1-9]\\d*", orginal);  
  19.     }  
  20.   
  21.     public static boolean isNegativeInteger(String orginal) {  
  22.         return isMatch("^-[1-9]\\d*", orginal);  
  23.     }  
  24.   
  25.     public static boolean isWholeNumber(String orginal) {  
  26.         return isMatch("[+-]{0,1}0", orginal) || isPositiveInteger(orginal) || isNegativeInteger(orginal);  
  27.     }  
  28.       
  29.     public static boolean isPositiveDecimal(String orginal){  
  30.         return isMatch("\\+{0,1}[0]\\.[1-9]*|\\+{0,1}[1-9]\\d*\\.\\d*", orginal);  
  31.     }  
  32.       
  33.     public static boolean isNegativeDecimal(String orginal){  
  34.         return isMatch("^-[0]\\.[1-9]*|^-[1-9]\\d*\\.\\d*", orginal);  
  35.     }  
  36.       
  37.     public static boolean isDecimal(String orginal){  
  38.         return isMatch("[-+]{0,1}\\d+\\.\\d*|[-+]{0,1}\\d*\\.\\d+", orginal);  
  39.     }  
  40.       
  41.     public static boolean isRealNumber(String orginal){  
  42.         return isWholeNumber(orginal) || isDecimal(orginal);  
  43.     }  
  44.   
  45. }  
分享到:
评论

相关推荐

    详解Java判断是否是整数,小数或实数的正则表达式

    在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...

    JavaScript 正则表达式 验证整数、小数、实数、有效位小数最简单

    验证数字最简单正则表达式大全 输入完按回车后即可验证!(自认为最简单!) 正整数: 负整数: 整 数: 正小数: 负小数: 小 数: 实 数: 保留1位小数: 保留2位小数: 保留3位小数: [Ctrl+A...

    RPA常用的正则表达式汇总

    在RPA(Robotic Process Automation)自动化流程中,正则表达式扮演着至关重要的角色,尤其是在数据处理和验证环节。UiBot是一款常见的RPA工具,它支持正则表达式进行复杂的数据匹配和提取。以下是对一些常用正则...

    JS常用正则表达式.docx

    4. `^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$` - 这个正则表达式验证正浮点数,确保至少有一个非零数字在整数部分或小数部分。 5. 同理,对于负浮点数和其他浮点数的...

    Java常见的正则表达式语法

    ### Java常见的正则表达式语法详解 正则表达式是一种强大的文本处理工具,在Java中,正则表达式被广泛应用于字符串的搜索、替换以及提取等操作。以下是对给定文件中提到的一些常见正则表达式的详细解析: #### ...

    C#中的常用正则表达式总结

    在C#编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于模式匹配、查找、替换和验证输入数据。以下是对C#中常用正则表达式的总结: 1. **只能输入数字**:`^[0-9]*$` - 这个正则表达式确保...

    java 正则表达式

    Java正则表达式是Java编程语言中用于处理文本模式匹配的强大工具,它遵循Perl风格的正则表达式语法。正则表达式可以用来验证、提取、替换或查找字符串中的特定模式,对于输入数据的验证和格式化尤其有用。以下是一些...

    最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式

    - 实数可以是整数或小数,因此正则表达式为 `^-?/d+(/./d+)?$`。这里 `(/./d+)?` 是整个小数部分,整个部分可以出现也可以不出现,即整数和小数都可以匹配。注意这里的小数点前后的 `?`,表示小数点和小数部分都是...

    c#中常用正则表达式

    在C#编程中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证各种复杂的字符串模式。它们是通过预定义的模式来识别和操作字符串的强大工具,广泛应用于数据验证、文本分析和数据提取等多个场景。...

    常用的正则表达式的用法

    - **含义**:匹配正实数,可以是整数或最多有两位小数的浮点数。 - **应用场景**:用于货币金额的输入验证,如价格计算等。 #### 8. 验证Email地址:`/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/` - **含义**:此...

    常用正则表达式及用法整理

    此正则表达式用于匹配一个整数或小数,其中小数部分最多包含两位。具体解释如下: - `^` 表示字符串的开始。 - `[0-9]+` 匹配一个或多个数字。 - `\.` 表示匹配一个小数点。 - `\.{0,1}` 表示小数点出现的次数为0次...

    各种验证的正则表达式

    ### 各种验证的正则表达式:详细解析与应用 #### 1. 数字验证正则表达式 - **验证数字**:`^[0-9]*$`,该表达式用于验证输入是否全部由数字组成,允许空字符串。 - **验证n位数字**:`^\d{n}$`,确保输入的数字...

    最强的正则表达式应用

    在上述代码中,展示了几个基于正则表达式的JavaScript函数,用于检查输入的字符串是否符合特定的数值类型,包括数字、自然数、整数和实数。下面我们将详细解释这些函数及其所使用的正则表达式。 1. `strlen` 函数:...

    正则表达式 范例.txt正则表达式 范例.txt

    根据提供的文件信息,我们可以归纳总结出正则表达式的多个应用场景及其对应的模式。下面将逐一解析这些正则表达式,帮助理解它们所代表的意义以及在实际应用中的用途。 ### 数字匹配 1. **整数匹配** - `^\d+$`:...

    数字的正则表达式写法参考书

    ### 数字正则表达式写法参考书知识点详解 #### 一、正则表达式的概念与应用 正则表达式是一种强大的文本处理工具,能够帮助我们进行文本匹配、替换等操作。在各种编程语言和软件开发中都有广泛的应用。本文档主要...

    常用的正则表达式验证

    ### 常用的正则表达式验证 正则表达式是进行文本匹配与搜索的强大工具,在编程领域中被广泛应用于各种应用场景,如数据验证、文本处理等。本文将详细介绍一系列常用的正则表达式,旨在帮助开发者在实际项目中能够...

Global site tag (gtag.js) - Google Analytics