逗号分隔的id和范围的正则表达式

时间:2012-08-17 14:56:29

标签: regex

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

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