2012-08-17 98 views
0

我有一個過濾器有一個字段,可讓您輸入逗號分隔的ID列表或一系列ID。例如,「1,2,3」和「4-9」是有效的ID。我爲此寫了以下正則表達式:以逗號分隔的ID和範圍的正則表達式

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

其中str是我正在評估的字符串。這工作正常,並返回所有場景的正確布爾值,除非在一個範圍內,第一個ID大於第二個。例如,12-10是一個無效範圍,但上面的正則表達式不返回false。

有沒有辦法驗證使用正則表達式呢?我明顯可以將字符串拆分爲' - '並比較這兩個部分,但會失去正則表達式提供的簡潔性。

回答

2

解決這個問題不是正則表達式的工作。

使用正則表達式提取範圍,然後再驗證。

3

「正則表達式提供的簡潔性」可能不值得它引入的複雜性。這似乎是一個相當明確的問題,首先在,上分割,然後在-上分割每個元素,這似乎是一個非常簡單而有效的方法。

相關問題