经常会遇到这样的情况,需要判断一个字符串是否是一个合法的数,包括整数,小数或者实数。
网上查到很多文章大多是判断这个字符串是否全为数字,比如下面这段来自StringUtils的代码,可以看到,13.2这样的数字实际上会返回false,可是,他的确是一个数字。
- public static boolean isNumeric(String str) {
- if (str == null) {
- return false;
- }
- int sz = str.length();
- for (int i = 0; i < sz; i++) {
- if (Character.isDigit(str.charAt(i)) == false) {
- return false;
- }
- }
- return true;
- }
当然,网上还能查到很多其他方式,诸如用正则表达式判断是否0-9,用字符ascii码判断是否是数字以及用Double.parseDouble()是否抛出异常来判断是否为数字。
事实上,除了最后一种方式能达到我们的要求,其他的都很难真正做到类似的判断。但是最后一种方式也很难区别出到底是正整数,负整数,正小数还是负小数,而且,捕获异常的方式实在是有些难看。
基于此原因,我自己写了一个工具类,专门用作数的检测,目前能够检测正整数,负整数,整数,正小数,负小数,小数以及实数,采用的仍然是正则表达式的方式,当然,如果有遗漏或者错误,欢迎联系我以便更正,同时也欢迎修改或使用这些代码以便符合你的应用场景。
可以简单讲下正则的思想以便修改,
1. 对于正整数而言,可以带+号,第一个数字不能为0
2. 对于负整数而言,必须带负号,第一个数字也不能为0
3. 对于整数而言,实际是由0,正整数和负整数组成的,所以偷个懒用前两个方法一起判断
4. 对于正小数而言,可以考带+号,并考虑两种情况,第一个数字为0和第一个数字不为0,第一个数字为0时,则小数点后面应该不为0,第一个数字不为0时,小数点后可以为任意数字
5. 对于负小数而言,必须带负号,其余都同上
6. 对于小数,可以带正负号,并且带小数点就行了,但是至少保证小数点有一边不为空,所以这里还是分左边不为空和右边不为空的情况
7. 实数比较简单,,要么是整数,要么是小数
- package com.sap.cesp.creditinsight.web.app.util;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public class NumberValidationUtils {
- private static boolean isMatch(String regex, String orginal){
- if (orginal == null || orginal.trim().equals("")) {
- return false;
- }
- Pattern pattern = Pattern.compile(regex);
- Matcher isNum = pattern.matcher(orginal);
- return isNum.matches();
- }
- public static boolean isPositiveInteger(String orginal) {
- return isMatch("^\\+{0,1}[1-9]\\d*", orginal);
- }
- public static boolean isNegativeInteger(String orginal) {
- return isMatch("^-[1-9]\\d*", orginal);
- }
- public static boolean isWholeNumber(String orginal) {
- return isMatch("[+-]{0,1}0", orginal) || isPositiveInteger(orginal) || isNegativeInteger(orginal);
- }
- public static boolean isPositiveDecimal(String orginal){
- return isMatch("\\+{0,1}[0]\\.[1-9]*|\\+{0,1}[1-9]\\d*\\.\\d*", orginal);
- }
- public static boolean isNegativeDecimal(String orginal){
- return isMatch("^-[0]\\.[1-9]*|^-[1-9]\\d*\\.\\d*", orginal);
- }
- public static boolean isDecimal(String orginal){
- return isMatch("[-+]{0,1}\\d+\\.\\d*|[-+]{0,1}\\d*\\.\\d+", orginal);
- }
- public static boolean isRealNumber(String orginal){
- return isWholeNumber(orginal) || isDecimal(orginal);
- }
- }
相关推荐
在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...
验证数字最简单正则表达式大全 输入完按回车后即可验证!(自认为最简单!) 正整数: 负整数: 整 数: 正小数: 负小数: 小 数: 实 数: 保留1位小数: 保留2位小数: 保留3位小数: [Ctrl+A...
在RPA(Robotic Process Automation)自动化流程中,正则表达式扮演着至关重要的角色,尤其是在数据处理和验证环节。UiBot是一款常见的RPA工具,它支持正则表达式进行复杂的数据匹配和提取。以下是对一些常用正则...
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中,正则表达式被广泛应用于字符串的搜索、替换以及提取等操作。以下是对给定文件中提到的一些常见正则表达式的详细解析: #### ...
在C#编程中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于模式匹配、查找、替换和验证输入数据。以下是对C#中常用正则表达式的总结: 1. **只能输入数字**:`^[0-9]*$` - 这个正则表达式确保...
Java正则表达式是Java编程语言中用于处理文本模式匹配的强大工具,它遵循Perl风格的正则表达式语法。正则表达式可以用来验证、提取、替换或查找字符串中的特定模式,对于输入数据的验证和格式化尤其有用。以下是一些...
- 实数可以是整数或小数,因此正则表达式为 `^-?/d+(/./d+)?$`。这里 `(/./d+)?` 是整个小数部分,整个部分可以出现也可以不出现,即整数和小数都可以匹配。注意这里的小数点前后的 `?`,表示小数点和小数部分都是...
在C#编程中,正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和验证各种复杂的字符串模式。它们是通过预定义的模式来识别和操作字符串的强大工具,广泛应用于数据验证、文本分析和数据提取等多个场景。...
- **含义**:匹配正实数,可以是整数或最多有两位小数的浮点数。 - **应用场景**:用于货币金额的输入验证,如价格计算等。 #### 8. 验证Email地址:`/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/` - **含义**:此...
此正则表达式用于匹配一个整数或小数,其中小数部分最多包含两位。具体解释如下: - `^` 表示字符串的开始。 - `[0-9]+` 匹配一个或多个数字。 - `\.` 表示匹配一个小数点。 - `\.{0,1}` 表示小数点出现的次数为0次...
### 各种验证的正则表达式:详细解析与应用 #### 1. 数字验证正则表达式 - **验证数字**:`^[0-9]*$`,该表达式用于验证输入是否全部由数字组成,允许空字符串。 - **验证n位数字**:`^\d{n}$`,确保输入的数字...
在上述代码中,展示了几个基于正则表达式的JavaScript函数,用于检查输入的字符串是否符合特定的数值类型,包括数字、自然数、整数和实数。下面我们将详细解释这些函数及其所使用的正则表达式。 1. `strlen` 函数:...
根据提供的文件信息,我们可以归纳总结出正则表达式的多个应用场景及其对应的模式。下面将逐一解析这些正则表达式,帮助理解它们所代表的意义以及在实际应用中的用途。 ### 数字匹配 1. **整数匹配** - `^\d+$`:...
### 数字正则表达式写法参考书知识点详解 #### 一、正则表达式的概念与应用 正则表达式是一种强大的文本处理工具,能够帮助我们进行文本匹配、替换等操作。在各种编程语言和软件开发中都有广泛的应用。本文档主要...
### 常用的正则表达式验证 正则表达式是进行文本匹配与搜索的强大工具,在编程领域中被广泛应用于各种应用场景,如数据验证、文本处理等。本文将详细介绍一系列常用的正则表达式,旨在帮助开发者在实际项目中能够...