如果我有一个类似于'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, "");
答案 0 :(得分:6)
如果2个破折号之间的数字总是,您可以这样做:
var schemaId = schemaUri.split('-')[1];
执行以下操作:
split
'-'
字符上的字符串 - > ['tcm:1', '23', '8'];
'23'
或者,试试这个:
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