5

Validating a tridion TCM ID using Regex on javascript, looks quiet simple but unfortunately I failed to do this.

I have attempted all the possible ways to validate a tcm id.

Below is the last tried regex:-

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

Here, TCM ID can be component or SG or Page.

Valid tcm id's are

  1. tcm:123-5678-4
  2. tcm:123-5678-64
  3. tcm:123-5678-16
  4. tcm:123-5678

Please suggest the best regex to validate a 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 に答える