1

言及されているように、誰かが正規表現を手伝ってくれませんか。

範囲が以下の形式の値のみを取る必要がある属性「範囲」を持つxml要素「docs」があります。

範囲 = "1,2,3,4,5"

また

範囲 = "1,2,3-6,10-12,15,20-30"

また

範囲 = 「すべて」

ちょっとした助けをいただければ幸いです。前もって感謝します。

4

3 に答える 3

3
^\d(?!.*,-)[\d\,\-]*\d$|^all$|^\d+$

あなたの数字のために働くはずです。入力できるのは、数字、コンマ、ダッシュ、または単語のみallです。

http://regexr.com?30p7f

于 2012-04-26T04:08:32.353 に答える
2

all|[1-9][0-9]*(-[1-9][0-9]*)?(,[1-9][0-9]*(-[1-9][0-9]*)?)*

ゼロと先行ゼロは許可されていないと想定しています。

正規表現は、数値が昇順であることを保証する良い方法ではありません。

于 2012-04-26T04:14:59.517 に答える
1

@minopret が述べたように、これはおそらく正規表現で完全に処理しない方がよいでしょう。文字列をsplit(",")取得し、結果の配列を繰り返し処理して、それらが昇順であることを確認します。その時点で個々の配列要素のそれぞれを正規表現して、次のように一致することを確認できます。

\d+(-\d+)?
于 2012-04-26T04:31:29.957 に答える