Sitecore中Treelist的RegEx验证?

时间:2012-09-24 13:28:26

标签: regex sitecore

在Sitecore中,当我向Treelist添加项目时,我希望treelist不允许任何项目或2 - 3项。

在项目的模板中,我可以在验证字段中设置RegEx来实现此目的。

我发现这个RegEx here:^。{0,116} $

此正则表达式允许0-3项。但我怎么能不允许1?

更新:编辑我的第一个问题,以更准确地解决我的问题。抱歉..

4 个答案:

答案 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);

无论如何,我希望这会以某种方式帮助你。