我有一个过滤器,其中包含一个字段,允许您输入以逗号分隔的ID列表或一系列ID。例如,“1,2,3”和“4-9”是有效的ID。我为此写了以下正则表达式:
/(^\d+(?:[,]\d+)*$)|(^\d+-\d+$)/.test(str)
其中str是我正在评估的字符串。这样可以正常工作并为所有场景返回正确的布尔值,除非在范围内,第一个id大于第二个id。例如,12-10是无效范围,但上述正则表达式不返回false。
有没有办法验证使用正则表达式?我显然可以将字符串拆分为' - '并比较这两个部分,但会失去正则表达式提供的简洁。
答案 0 :(得分:3)
“正则表达式提供的简洁性”可能不值得它将引入的复杂性。这似乎是一个非常明确定义的问题,首先在,
然后在-
上分解每个元素似乎是一种非常简单有效的方法。
答案 1 :(得分:2)
解决这个问题不是正则表达式的工作。
使用正则表达式提取范围,然后验证。