ID のコンマ区切りリストまたは ID の範囲を入力できるフィールドを持つフィルターがあります。たとえば、「1,2,3」と「4-9」は有効な ID です。私はこれのために次の正規表現を書きました:
/(^\d+(?:[,]\d+)*$)|(^\d+-\d+$)/.test(str)
ここで、str は評価中の文字列です。これは正常に機能し、範囲内で最初の ID が 2 番目の ID より大きい場合を除き、すべてのシナリオで正しいブール値を返します。たとえば、12 ~ 10 は無効な範囲ですが、上記の正規表現は false を返しません。
正規表現を使用してそれを検証する方法はありますか? 文字列を '-' で分割して 2 つの部分を比較することはできますが、正規表現が提供する簡潔さは失われます。