工作中遇到要在后台校验金额格式,草草看了下正则表达式,写了第一个
String regex_normal = "[0-9]{1,14}\\.{0,1}[0-9]{0,2}";//16位整数或小数(两位);
中括号[0-9]表示0到9这10个数字,花括号{1,14}表示可以出现次数为1到14次,后面同理。
其中小数点 \\. 第一个反斜杠是java的转义,第二个是对 . 的转义。
仔细看了下,发现有bug,对 1. 这样的金额也能通过。
改进一下
String regex_strict = "[0-9]{1,14}(\\.{0,1}[0-9]{1,2})?";//16位整数或小数(两位);
多了()?, ? 表示圆括号内容可惜重复1或0次。
测试源码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexpTest {
public static void main(String[] args){
Pattern pattern_normal;
Pattern pattern_strict;
String regex_normal = "[0-9]{1,14}\\.{0,1}[0-9]{0,2}";//16位整数或小数(两位);
String regex_strict = "[0-9]{1,14}(\\.{0,1}[0-9]{1,2})?";//16位整数或小数(两位);
String integer_1 = "1";
String integer_2 = "12";
String integer_3 = "123";
String float_1 = "1.2";
String float_2 = "1.23";
String float_3 = "1.234";
String float_0 = "1.";
pattern_normal = Pattern.compile(regex_normal);
pattern_strict = Pattern.compile(regex_strict);
System.out.println("pattern_normal 匹配 " + integer_1 + " :" + pattern_normal.matcher(integer_1).matches());
System.out.println("pattern_strict 匹配 " + integer_1 + " :" + pattern_strict.matcher(integer_1).matches());
System.out.println("pattern_normal 匹配 " + integer_2 + " :" + pattern_normal.matcher(integer_2).matches());
System.out.println("pattern_strict 匹配 " + integer_2 + " :" + pattern_strict.matcher(integer_2).matches());
System.out.println("pattern_normal 匹配 " + integer_3 + " :" + pattern_normal.matcher(integer_3).matches());
System.out.println("pattern_strict 匹配 " + integer_3 + " :" + pattern_strict.matcher(integer_3).matches());
System.out.println("pattern_normal 匹配 " + float_0 + " :" + pattern_normal.matcher(float_0).matches());
System.out.println("pattern_strict 匹配 " + float_0 + " :" + pattern_strict.matcher(float_0).matches());
System.out.println("pattern_normal 匹配 " + float_1 + " :" + pattern_normal.matcher(float_1).matches());
System.out.println("pattern_strict 匹配 " + float_1 + " :" + pattern_strict.matcher(float_1).matches());
System.out.println("pattern_normal 匹配 " + float_2 + " :" + pattern_normal.matcher(float_2).matches());
System.out.println("pattern_strict 匹配 " + float_2 + " :" + pattern_strict.matcher(float_2).matches());
System.out.println("pattern_normal 匹配 " + float_3 + " :" + pattern_normal.matcher(float_3).matches());
System.out.println("pattern_strict 匹配 " + float_3 + " :" + pattern_strict.matcher(float_3).matches());
}
}
输出:
pattern_normal 匹配 1 :true
pattern_strict 匹配 1 :true
pattern_normal 匹配 12 :true
pattern_strict 匹配 12 :true
pattern_normal 匹配 123 :true
pattern_strict 匹配 123 :true
pattern_normal 匹配 1. :true
pattern_strict 匹配 1. :false
pattern_normal 匹配 1.2 :true
pattern_strict 匹配 1.2 :true
pattern_normal 匹配 1.23 :true
pattern_strict 匹配 1.23 :true
pattern_normal 匹配 1.234 :false
pattern_strict 匹配 1.234 :false
还想对0 0.0 0.00这样的金额过滤,暂时不知道怎么写,希望高手帮忙。现在暂时是先格式校验通过后再用数值和0比较。
分享到:
相关推荐
实数包括整数和小数,因此其正则表达式可以是整数和小数正则表达式的组合。由于实数要么是整数,要么是小数,因此,对于实数的正则表达式,我们可以分别匹配整数和小数的模式。 ### Java代码实现 文章中提供了`...
一个WinForm程序用以测试C#正则表达式文本框验证:只能输入整数和带两位小数的小数。如暂时无法下载,可以查看本人CSDN博客里相应文章中关于该程序的思路。能力有限,仅供交流学习,请多多指教。
该文件中统计的正则表达式包含以下内容(都是实际项目中使用的,经过测试): 1、大于等于0的值,允许输入两位小数(边界值:100.0,100.00等值都已包含在验证的里面); 2、大于3小于40的整数; 3、0到1之间的小数...
C# 正则表达式大全 正则表达式是指用来描述字符串模式的表达式,通过使用正则...然而,正则表达式的使用需要一定的规则和语法,因此,开发者需要熟悉正则表达式的语法和规则,以便在实际项目中正确地使用正则表达式。
整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{n}$"。...匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff]
这个“vb正则表达式实例”很可能是为了帮助开发者测试和理解正则表达式的工作原理而设计的一个应用程序。下面将详细探讨正则表达式的基本概念、在VB.NET中的应用以及如何使用它们进行文本匹配。 1. 正则表达式基础 ...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串。它通过预定义的模式来识别和操作字符串中的数据。以下是一些常见的正则表达式及其用途: 1. 匹配中文字符:`[u4e00-u9fa5]` - 这个正则...
4. **小数验证**:只允许输入带有最多两位小数的数字。 - 正则表达式:`^[0-9]+(\.[0-9]{2})?$` - 示例:`123.45` 5. **非零开头数字**:只允许输入不以零开头的数字。 - 正则表达式:`^+?[1-9][0-9]*$` - 示例...
验证整数和小数的正则表达式 网上很多关于验证小数的正则表达式,但是很多都不是百分百正确,所以我结合一些前辈的经验,自己写了一个。 验证非0开头的无限位整数和小数。整数支持无限位,小数点前支持无限位,...
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。在Python编程语言中,正则表达式提供了强大的文本处理能力,使得开发者能够高效地处理...
在IT行业中,正则表达式(Regular Expression)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在本场景中,我们关注的是如何使用正则表达式来验证金额格式。金额格式通常要求精确到小数点后两位,并且可能...
在编程领域,正则表达式是一种强大的文本处理工具,它能帮助我们进行复杂的字符串匹配、查找、替换和解析。在本话题中,我们将探讨如何利用C#中的正则表达式来巧妙地解析度分秒格式的字符串,将其转换为统一的度数...
例如,一个文本框可能只允许用户输入数字、小数点和减号,这样的需求可以通过设置一个特定的正则表达式来实现。下面我们将详细讨论如何构建这样的正则表达式以及其背后的工作原理。 首先,我们需要明确允许输入的...
正则表达式(Regular Expression)是用于匹配字符串模式的一种语法,广泛应用于文本处理、数据验证、数据...以上正则表达式在不同的场景下都有其特定的用途,熟练掌握它们可以帮助我们更有效地处理和验证各种文本数据。
\\.\\d{1,2})`:这部分用于匹配小数部分,包括可选的整数部分和必须的小数部分,其中小数部分最多保留两位。 - `{1,1}`:表示前面的整个表达式只能出现一次。 - `$`:匹配输入字符串的结束位置。 #### 实际应用: ...
正则表达式 `^\d+$` 用于匹配非负整数,包括0和正整数。`^` 表示匹配字符串的开始,`\d` 是数字的元字符,代表0-9之间的任何数字,`+` 表示前面的元素可以出现一次或多次,`$` 表示匹配字符串的结束。例如: ```...
这些知识点涵盖了不同类型的正则表达式的构建方法及其用途,对于理解和应用正则表达式非常有帮助。 ### 正则表达式概述 正则表达式(Regular Expression)是一种强大的文本处理工具,在字符串查找、替换等操作中...
下面我们将详细探讨Android中如何使用正则表达式来验证IP地址和端口号。 1. **IP地址验证**: - IPv4:一个有效的IPv4地址由四个0-255之间的数字组成,每个数字之间用`.`分隔。对应的正则表达式为: ``` ^((25[0...
正则表达式是一种强大的文本处理工具,用于在...通过理解和应用上述正则表达式,我们可以更好地处理各种文本数据,确保数据的准确性和一致性。在实际项目中,结合具体需求,可能还需要对这些基础模式进行扩展和定制。
该正则表达式用于匹配国内电话号码,要求电话号码以 3 位或 4 位区号开头,后面跟随 7 位或 8 位号码。 18. 匹配腾讯 QQ 号的正则表达式:[1-9][0-9]{4,} 该正则表达式用于匹配腾讯 QQ 号,要求 QQ 号从 10000 ...