2012-08-17 73 views
0

我有一个过滤器有一个字段,可让您输入逗号分隔的ID列表或一系列ID。例如,“1,2,3”和“4-9”是有效的ID。我为此写了以下正则表达式:以逗号分隔的ID和范围的正则表达式

/(^\d+(?:[,]\d+)*$)|(^\d+-\d+$)/.test(str) 

其中str是我正在评估的字符串。这工作正常,并返回所有场景的正确布尔值,除非在一个范围内,第一个ID大于第二个。例如,12-10是一个无效范围,但上面的正则表达式不返回false。

有没有办法验证使用正则表达式呢?我明显可以将字符串拆分为' - '并比较这两个部分,但会失去正则表达式提供的简洁性。

回答

2

解决这个问题不是正则表达式的工作。

使用正则表达式提取范围,然后再验证。

3

“正则表达式提供的简洁性”可能不值得它引入的复杂性。这似乎是一个相当明确的问题,首先在,上分割,然后在-上分割每个元素,这似乎是一个非常简单而有效的方法。

相关问题