java - 正则表达式允许小数位数,包括 Java 中的 .123 和 123. 等
问题描述
朋友们
我有以下"^[0-9]{1,12}+(\\.[0-9]{1,4})?$"
允许以下值的正则表达式
123456789012.1234 这是一个有效的十进制值 {12,4}
123456789012 这是一个有效的整数值等
但它不允许像 .1235 等值,我应该如何修改上面的正则表达式,以便它也允许像.123 和 123等值
解决方案
我猜,
^(?:[0-9]{1,12}(?:\\.[0-9]{0,4})?|\\.[0-9]{0,4})$
可能有点接近。
测试
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex = "^(?:[0-9]{1,12}(?:\\.[0-9]{0,4})?|\\.[0-9]{0,4})$";
final String string = "123456789012.1234\n"
+ "123456789012\n"
+ ".1235\n"
+ ".123\n"
+ "123.\n"
+ ".12345\n"
+ "0.12345";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
输出
Full match: 123456789012.1234
Full match: 123456789012
Full match: .1235
Full match: .123
Full match: 123.
如果您希望简化/更新/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。
正则表达式电路
jex.im可视化正则表达式:
推荐阅读
- javascript - 除非刷新,否则Canvasjs不会绘制图表
- ios - swift - 快速按下集合视图单元格时如何修复自定义视图中的约束
- list - Erlang,查找列表中数字的出现次数
- sql-server - 将 varchar 值“Wire”转换为数据类型 int 时转换失败。(Microsoft SQL Server 报表生成器)
- java - 使用 Apache POI 更新 Excel 模板的最佳方法
- spring-data-neo4j - 在 Spring Data Neo4J 和 Elasticsearch 之间重用单个实体
- docker - In Docker Registry Allow Temporary Delete
- qt - MenuItem subMenu 属性:如何赋值?
- android - 前台服务冻结在某些情况下工作
- php - 带有 PUT 请求的元素 ui 表单