java - 逗号分隔的正则表达式,范围

标签 java regex

我需要为逗号分隔的数字(最多 3 位)和/或用破折号分隔的范围创建正则表达式。以下字符串有效

12
12,13,14,15
12,13-15,16,100-101,120
12-13,15-20,100-200

请注意,数字不能超过 3 位。

我需要一个来验证Java中的字符串。任何人都可以为这些建议一个匹配的正则表达式吗?

最佳答案

要允许最多三位数字(1 到 3),请使用 \d{1,3} 模式。

^\d{1,3}(?:-\d{1,3})?(?:,\d{1,3}(?:-\d{1,3})?)*$

Java 正则表达式是,

"^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"

DEMO

String s1 = "12,13-15,16,100-101,120";
String s2 = "12,13";
String s3 = "12-13,15-20,100-200";
String s4 = "12-1300,15-20,100-2000";
String s5 = "-13,15-20,100-200";
System.out.println(s1.matches("^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"));
System.out.println(s2.matches("^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"));
System.out.println(s3.matches("^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"));
System.out.println(s4.matches("^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"));
System.out.println(s5.matches("^\\d{1,3}(?:-\\d{1,3})?(?:,\\d{1,3}(?:-\\d{1,3})?)*$"));

输出:

true
true
true
false
false

关于java - 逗号分隔的正则表达式,范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27000599/

相关文章:

python-3.x - 如何在 pandas 数据框中用 regex 分隔一个字符串和一个空格?

regex - 检查字符串是否像正则表达式

c++ - std::string 引用、std::regex 和 boost::filesystem 的基本概念

c# - 有没有办法使用正则表达式来分割 I[1,2]?

java - 确定在 Java 中创建的对象数

java - 如何关闭无限循环锁定的套接字?

java - 抽象类 : class, 接口(interface)或预期枚举错误

匹配keyworks的python过滤行

java - EhCache 3 : How to unwrap statistics bean?

java - 在等待时既被通知又被中断的线程