1

行の範囲と行の合計数の2列のテキストボックスを持つWindowsフォームを作成しました。入力されたデータが正しい形式の数字、カンマ、ハイフンのみで構成されていることを確認するために、[行の範囲] テキストボックスにチェックを入れたいです。つまり、10-20,30-40,50 、60、70。しかし、これ以外は許されるべきではありません。

基本的に、「行の合計数」テキストボックスに、「行の範囲」テキストボックスで利用可能なデータを自動的に入力したいと考えています。したがって、上記の例では、カウントは - (20 マイナス 10) + (40 マイナス 30) + 1 (行 50) + 1 (行 60) + 1 (行 70) = 23 になります。

私は次のようなものを試しました:

string reg = @"^([0-9]+([,][0-9]+))* |([0-9]+([.\u2013-][0-9]+))$";

しかし、これは 10-20-30 のようなケースも正しいことを検証します。私の予想によれば、これは正しくありません。

ここで私を助けてくれませんか。よろしくお願いします。

4

1 に答える 1

1

各コンポーネントの可能な形式は次のとおりです。

\d+-\d+
\d+

同じ構造を共有しているため、それらを組み合わせることができます。

\d+(-\d+)?

セパレーターで区切られたいくつかの X の通常の正規表現パターンは次のとおりです。

X(,X)*

そのため、コンマで区切られたこれらのコンポーネントの少なくとも 1 つを持つ最終的な正規表現を構築できます。

^\d+(-\d+)?(,\d+(-\d+)?)*$

クイック PowerShell テスト:

PS> '50,60','10-20','1,2-5,7','10-20,30-40,50,60,70','10-20-30' -match '^\d+(-\d+)?(,\d+(-\d+)?)*$'
50,60
10-20
1,2-5,7
10-20,30-40,50,60,70
于 2013-04-12T06:54:18.530 に答える