在Sitecore中,当我向Treelist添加项目时,我希望treelist不允许任何项目或2 - 3项。
在项目的模板中,我可以在验证字段中设置RegEx来实现此目的。
我发现这个RegEx here:^。{0,116} $
此正则表达式允许0-3项。但我怎么能不允许1?
更新:编辑我的第一个问题,以更准确地解决我的问题。抱歉..
答案 0 :(得分:6)
(...{2,3})?
使表达式匹配2或3个项目,并使用?
使整个表达式可选。
答案 1 :(得分:1)
找出我的问题的答案。
这将正确验证:
^(.{0}|.{77,116})$
如果有人有更好的答案,请提交。谢谢你的帮助!
答案 2 :(得分:0)
您可以执行以下操作:A(| foo {2,3})B匹配AB,AfoofooB和AfoofoofooB。
但是,你真的应该考虑,也许不使用正则表达式来计算匹配数通常会更好。
答案 3 :(得分:0)
答案是“是”(见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);
无论如何,我希望这会以某种方式帮助你。