在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