2

如果我有一个像这样的 Tridion URI 'tcm:1-23-8' 并且我想用正则表达式得到 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, "");
4

3 回答 3

7

如果数字总是 在两个破折号之间,你可以这样做:

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

这将执行以下操作:

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

或者,试试这个:

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

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

于 2013-01-07T11:35:12.560 回答
3

而不是调用$display.getItem().getId();,你可以调用$display.getUri();然后使用split()

var schemaId = $display.getUri().split('-')[1];
于 2013-01-07T13:32:59.590 回答
2

如果您确实想要一个纯正则表达式解决方案......

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

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

于 2013-01-07T15:48:42.080 回答