Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于匹配混合范围列表和数字列表的正则表达式_Java_Regex - Fatal编程技术网

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更新了答案)呼。谢谢我不会想到这一点的!