java - 使用正则表达式使用 Decimal 验证货币
问题描述
使用正则表达式使用 Decimal 验证货币
大家好,我正在尝试在我的一个场景中使用正则表达式。所以我以字符串格式获取货币我必须检查以下情况
- 长度可以在 1-6 之间
- 货币可能包含也可能不包含小数。
- 十进制只允许一次。
123.45 - 有效 1234.. - 无效 12.3 - 有效 123456 - 有效 123456.7 - 无效
我尝试了正则表达式 ^[0-9.]{1,6}$
但它不验证第三种情况(小数只允许一次)。请帮助我输入您的信息。
解决方案
你可以使用这个正则表达式,
^(?=[\d.]{1,6}$)\d+\.?\d+$
在这里,这种(?=[\d.]{1,6}$)
积极的前瞻性确保文本的总长度为 1 到 6 个字符,并\d+\.?\d+
确保数字格式正确,^
并且$
是开始和结束锚点,以确保完整的字符串匹配而不是部分匹配。
Java代码,
List<String> list = Arrays.asList("123.45","1234..","12.3","123456","123456.7");
list.forEach(x -> {
System.out.println(x + " --> " + (x.matches("^(?=[\\d.]{1,6}$)\\d+\\.?\\d+$")?"Valid":"Invalid"));
});
输出,
123.45 --> Valid
1234.. --> Invalid
12.3 --> Valid
123456 --> Valid
123456.7 --> Invalid
推荐阅读
- json - 在SqlServer中创建json对象并聚合成json数组
- javascript - 如何检查 .pipe(map) Rxjs 运算符中的空响应?
- html - Nuxt 不为组件渲染 html
- java - 在 Java 中或在哪个版本中禁止非法访问时是否存在任何信息?
- java - 使用 if else 语句扫描和打印奇数和偶数
- azure - 逻辑应用嵌套 forloop 错误工作流运行操作“响应”的类型为“响应”,无法嵌套在“foreach”类型的操作下
- sql - 从联接表中汇总特定列的数据(oracle 9i)
- javascript - 如果在 catch 语句中使用 else 语句,我可以有逻辑代码吗?
- python - 从 voice_engine.source 导入源 ModuleNotFoundError:没有名为“voice_engine”的模块
- vb.net - 如何使用互操作在 Word 文档的正文中添加书签