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

Siv*_*ran 5 regex tridion

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

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

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

(tcm:(\d)+-(\d)+(-16|-4|-64))\W
Run Code Online (Sandbox Code Playgroud)

在这里,TCM ID可以是componentSGPage.

有效的tcm id是

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

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

Fra*_*len 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的答案,这有一个额外的好处,即匹配组具有可读的名称.


xda*_*azz 8

尝试:

/^tcm:\d{3}-\d{4}(?:-16|-4|-64)?$/
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望从正则表达式中删除确切的基数,因为每个数字中可能有更多或更少的数字.所以`/ ^ tcm:\ d + - \d +(?: - 16 | -4 | -64)?$ /`.您还应该考虑是否要匹配每个项目类型,如果匹配,请相应地更新最后一个匹配组.在最通用的情况下,它可以只是`/ ^ tcm:\ d + - \d +(?: - \d +)?$ /`.最后:请记住,TCM URI**也可以引用特定版本,因此以`-v123`结尾.这会导致`/ ^ tcm:\ d + - \d +(?: - \d +)?(?: - v\d +)?$ /` (7认同)

Nun*_*res 5

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

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

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