Sitecoreで、ツリーリストにアイテムを追加するときに、ツリーリストでアイテムを許可しないか、2〜3個のアイテムのみを許可したいと思います。
アイテムのテンプレートで、これを実現するために検証フィールドに正規表現を設定できます。
ここでこの正規表現を見つけました:^。{0,116} $
この正規表現では、0〜3個のアイテムが許可されます。しかし、どうして1を許可できないのでしょうか。
更新:最初の質問を編集して、問題をより正確に把握しました。ごめん..
(...{2,3})?
式を2つまたは3つの項目に一致させ、を使用して式全体をオプションにし?
ます。
私の質問に対する答えを見つけました。
これは正しく検証されます:
^(.{0}|.{77,116})$
誰かがより良い答えを持っているなら、提出してください。助けてくれてありがとう!
次のようなことができます:AB、AfoofooB、およびAfoofoofooBに一致するA(| foo {2,3})B。
ただし、一致数をカウントするために正規表現を使用しない方が一般的には良いことを実際に考慮する必要があります。
答えは「はい」です(decezeの答えを参照)。しかし、あなたはリストに追加しているので、リストに何も追加しないのは間違いです(nullエントリを追加しない限り)。単純に2または3を探すことができます(... {2,3})。
これが、質問にコンテキストを提供することが常に良い理由です。つまり、最良の回答が得られるときです。
この例では、一致するものが2つまたは3つある場合に、パターンに一致するすべての行をリストに追加します。
var list = new List<Match>();
var textlines = @"
This is a test
*}|{*
*}|{**}|{*
*}|{**}|{**}|{*
*}|{**}|{**}|{**}|{**}|{**}|{*
";
var pattern = @"^(\*\}\|\{\*){2,3}$";
var mx = Regex.Matches(textlines, pattern, RegexOptions.Multiline);
foreach (Match m in mx)
list.Add(m);
ただし、サンプルデータはパターンに基づいて作成されています。これは本当にあなたのデータがどのように見えるか?それとも、もっと似たようなものを探しているのかもしれません...
var list = new List<Match>();
var textlines = @"
This is a test
*}|{*
*}|{*blah blah blah*}|{*
*}|{*blah blah blah*}|{*blah blah blah*}|{*
*}|{*blah blah blah*}|{*blah blah blah*}|{*blah blah blah*}|{*blah blah blah*}|{*blah blah blah*}|{*
";
var pattern = @"^([^*]*\*\}\|\{\*){2,3}$"; //notice the change to the pattern
var mx = Regex.Matches(textlines, pattern, RegexOptions.Multiline);
foreach (Match m in mx)
list.Add(m);
とにかく、これが何らかの形であなたに役立つことを願っています。