Java 用于匹配混合范围列表和数字列表的正则表达式
我正在尝试验证一个字符串,该字符串表示一个范围列表,该列表在打印对话框中指示要打印的页面。示例:Java 用于匹配混合范围列表和数字列表的正则表达式,java,regex,Java,Regex,我正在尝试验证一个字符串,该字符串表示一个范围列表,该列表在打印对话框中指示要打印的页面。示例: 一, 1-10 1,20 1-5,10 1-3,9-11 我猜任何未“完成”的内容都是无效的,例如: 一,- 一, ,3 1-4 1,2,4- 正如你可以猜到的——我在这方面失败了;) 非常感谢您的帮助您可以尝试regex(\d+(\-\d+)(,(?!$)?)+,例如: String str = "1-1,12"; System.out.println(str.matches("(\\d+
- 一,
- 1-10
- 1,20
- 1-5,10
- 1-3,9-11
- 一,-
- 一,
- ,3
- 1-4
- 1,2,4-
非常感谢您的帮助您可以尝试regex
(\d+(\-\d+)(,(?!$)?)+
,例如:
String str = "1-1,12";
System.out.println(str.matches("(\\d+(\\-\\d+)?(,(?!$))?)+"));
其中:
\d+
1个或多个数字
(\\-\\d+)
后跟或不后跟-
和一个或多个数字
(,(?!$)?
以上所有内容后面是否跟有“,”(但不是因为字符串的最后一个位置-(?!$)
在字符串结尾之前是负数)
<代码> +/<代码>,上面提到的至少必须给出一个时间
,你能添加一个你认为无效的字符串的例子吗?还有,你尝试了什么?我根据你的要求添加了一些无效的例子。嗨,斯坦尼斯拉夫,谢谢你的回答和解释!它似乎工作得很好,除了以下情况:1-3,9-11
。公平地说,我没有把它作为上面可能的例子,但我现在添加了它;)@dmeu只需将其更改为(\d+(\-\d+)(,(!$)?)+
,它就会工作。@dmeu更新了答案)呼。谢谢我不会想到这一点的!