在Sitecore中,當我將項目添加到我的Treelist時,我希望trereeist只允許沒有項目或2 - 3項。SiteCore中的Treelist RegEx驗證?
在項目的模板中,我可以在驗證字段中設置RegEx來實現此目的。
我發現這個表達式here:^ {0116} $
此正則表達式允許0-3項。但我怎麼能不讓1?
更新:編輯我的第一個問題,以更準確地進入我的問題。對不起..
在Sitecore中,當我將項目添加到我的Treelist時,我希望trereeist只允許沒有項目或2 - 3項。SiteCore中的Treelist RegEx驗證?
在項目的模板中,我可以在驗證字段中設置RegEx來實現此目的。
我發現這個表達式here:^ {0116} $
此正則表達式允許0-3項。但我怎麼能不讓1?
更新:編輯我的第一個問題,以更準確地進入我的問題。對不起..
找出我的問題的答案。
這將正確地驗證:
^(.{0}|.{77,116})$
如果任何人有一個更好的答案,請提交。謝謝您的幫助!
您可以執行如下操作:A(| foo {2,3})B匹配AB,AfoofooB和AfoofoofooB。
但是,你真的應該考慮,也許不使用正則表達式來計算匹配數通常會更好。
答案是肯定的(參見deceze的回答)。但是,您正在添加到列表中,並且向列表添加任何內容都是noop(除非您添加空條目?)。你可以簡單地尋找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);
,我希望這可以幫助你一起以某種方式。
謝謝你的回答。查看我更新的問題以更好地理解我的問題。 :) – Raskolnikoov
什麼語言/正則表達式? – geoffspear
您引用的示例是Sitecore列表框中的「驗證」字段。你如何試圖在一個Treelist中使用它? – Les
找到這個鏈接http://bit.ly/jdcUVT,但我怎麼可能設置爲不允許1在這個正則表達式^。{0,116} $ – Raskolnikoov