5

在 javascript 上使用 Regex 验证 tridion TCM ID 看起来很简单,但不幸的是我没有做到这一点。

我尝试了所有可能的方法来验证 tcm id。

以下是最后一次尝试的正则表达式:-

(tcm:(\d)+-(\d)+(-16|-4|-64))\W

在这里,TCM ID可以是componentorSGPage

有效的 tcm id 是

  1. 中医:123-5678-4
  2. 中医:123-5678-64
  3. 中医:123-5678-16
  4. 中医:123-5678

请建议最好的正则表达式来验证 tcm id。

4

3 回答 3

9

提供的正则表达式 xdazz 非常适合匹配您提供的示例。但对于更通用的处理,您可能想要:

  1. 删除确切的基数,因为每个数字中可能有更多或更少的数字。所以/^tcm:\d+-\d+(?:-16|-4|-64)?$/
  2. 考虑是否要匹配每个项目类型,如果是,请相应地更新最后一个匹配组。在最一般的情况下,它可能只是/^tcm:\d+-\d+(?:-\d+)?$/
  3. 请记住,TCM URI 也可以引用特定版本,因此以 -v123 结尾。所以这会导致/^tcm:\d+-\d+(?:-\d+)?(?:-v\d+)?$/

当然,这使您非常接近 Nuno 的答案,它具有匹配组具有可读名称的额外优势。

于 2012-10-07T22:40:40.167 回答
8

尝试:

/^tcm:\d{3}-\d{4}(?:-16|-4|-64)?$/
于 2012-10-07T12:41:51.303 回答
5

我在 c# 中使用它来验证 Tcm Uri(我相信这也是TcmUri.IsValid()这样做的)

"^tcm:(?<pubId>[0-9]+)-(?<itemId>[0-9]+)(-(?<itemType>[0-9]+))?(-v(?<version>[0-9]+))?$"

如果要验证它是页面还是组件,那么 itemType 应该为空,16 或 64。

于 2012-10-07T22:06:05.100 回答