1

如前所述,任何人都可以帮助我使用正则表达式。

我有一个 xml 元素“文档”,它有一个属性“范围”,其中范围应该只采用以下格式的值。

范围 = "1,2,3,4,5"

或者

范围 = "1,2,3-6,10-12,15,20-30"

或者

范围=“全部”

一点帮助将不胜感激。提前致谢。

4

3 回答 3

3
^\d(?!.*,-)[\d\,\-]*\d$|^all$|^\d+$

应该适用于您的数字。输入只能是数字、逗号、破折号或单词all

http://regexr.com?30p7f

于 2012-04-26T04:08:32.353 回答
2

all|[1-9][0-9]*(-[1-9][0-9]*)?(,[1-9][0-9]*(-[1-9][0-9]*)?)*

我假设不允许使用零和前导零。

正则表达式不是确保数字按升序排列的好方法。

于 2012-04-26T04:14:59.517 回答
1

正如@minopret 提到的,这可能最好不要用正则表达式完全处理。我将split(",")字符串然后迭代结果数组以确保它们按升序排列。您可以在此时正则表达式每个单独的数组元素,以确保它们匹配如下内容:

\d+(-\d+)?
于 2012-04-26T04:31:29.957 回答