指定された部分文字列の繰り返し数だけを含む文字列のパターン (おそらくそれらがゼロで、結果として空の文字列になります) は\A(?:substring goes here)*\z
です。は\A
、文字列の先頭、文字列\z
の末尾、および は(?:...)*
、コロンと閉じ括弧の間の要素に一致するものの 0 個以上のコピーに一致します。
\A(?:0,8)*\z
しかし、余分なコンマがあるため、文字列は実際には一致しません。一致する例は「0,80,80,80,8」です。のようなものでカンマを明示的に説明する必要があります\A0,8(?:,0,8)*\z
。
次のように、C# でそのようなものを構築できます。
string OkSubstring = "0,8";
string aOk = "0,8,0,8,0,8,0,8";
string bOK = "0,8,0,8,1,0,8,0";
Regex OkRegex = new Regex( @"\A" + OkSubstring + "(?:," + OkSubstring + @")*\z" );
OkRegex.isMatch(aOK); // True
OkRegex.isMatch(bOK); // False
コンマ区切り文字をハードコーディングします。より一般的にすることができます。または、リテラル正規表現が必要なだけかもしれません。いずれにせよ、それはあなたが必要とするパターンです。
EDITマイクサミュエルの提案ごとにアンカーを変更しました。