Javascript - 正则表达式验证tridion tcm id

时间:2012-10-07 12:27:13

标签: regex tridion

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

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

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

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

此处TCM ID可以是componentSGPage

有效的tcm id是

  1. TCM:123-5678-4
  2. TCM:123-5678-64
  3. TCM:123-5678-16
  4. TCM:123-5678
  5. 请建议最好的正则表达式来验证tcm id。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:8)

尝试:

/^tcm:\d{3}-\d{4}(?:-16|-4|-64)?$/

答案 2 :(得分:5)

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

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

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