从URI Regex获取Tridion项目ID

时间:2013-01-07 11:25:45

标签: regex tridion

如果我有一个类似于'tcm:1-23-8'的Tridion URI,我想用正则表达式获得23。

以下作品,但我知道有更好的方法。 tcm:和'-8'总是在那里。更改的部分是1和23.

var schemaUri = $display.getItem().getId(); // tcm:1-23-8
var re = /tcm:\d-/gi;  // = 23-8
var schemaIdWithItemType = schemaUri.replace(re, "");
re = /-8/gi;
var schemaId = schemaIdWithItemType.replace(re, "");

3 个答案:

答案 0 :(得分:6)

如果2个破折号之间的数字总是,您可以这样做:

var schemaId = schemaUri.split('-')[1];

执行以下操作:

  1. split '-'字符上的字符串 - > ['tcm:1', '23', '8'];
  2. 从该数组中获取第二项'23'
  3. 或者,试试这个:

    var schemaId = schemaUri.match(/-\d+-/)[0].replace(/-/g,'');
    

    这会在.match(/-\d+-/)的短划线之间找到数字,然后删除破折号。

答案 1 :(得分:3)

您可以拨打$display.getItem().getId();,然后使用$display.getUri();

,而不是致电split()
var schemaId = $display.getUri().split('-')[1];

答案 2 :(得分:2)

如果您确实需要纯正的Regex解决方案......

/^tcm:(\d+)-(\d+)(?:-(\d+))?$/i

应验证您的Tridion URI的格式并为您提供3个子匹配,其中第二个将是项目ID