我有一个过滤器,它有一个字段,可让您输入以逗号分隔的 id 列表或 id 范围。例如,“1,2,3”和“4-9”是有效的 ID。我为此编写了以下正则表达式:
/(^\d+(?:[,]\d+)*$)|(^\d+-\d+$)/.test(str)
其中 str 是我正在评估的字符串。这可以正常工作并为所有场景返回正确的布尔值,除非在一个范围内,第一个 id 大于第二个。例如,12-10 是一个无效的范围,但上面的正则表达式不会返回 false。
有没有办法验证使用正则表达式?我显然可以在'-'上拆分字符串并比较这两个部分,但会失去正则表达式提供的简洁性。