2012-10-07 7 views
5

Convalidare un ID TCM tridion usando Regex su javascript, sembra semplice ma sfortunatamente non sono riuscito a farlo.Javascript - Regex per convalidare un tridion tcm id

Ho provato tutti i modi possibili per convalidare un ID tcm.

Di seguito è l'ultima regex provato: -

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

Qui, TCM ID può essere component o SG o Page.

validi TCM id sono

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

Si prega di suggerire la regex migliore per convalidare un id tcm.

risposta

8

Prova:

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

Grazie mille amico mio. Ha funzionato come un fascino. –

+0

+1 per una bella risposta. –

+7

È possibile rimuovere le cardinalità esatte dall'espressione regolare, poiché potrebbero esserci più o meno cifre in ciascuno dei numeri. Quindi '/^tcm: \ d + - \ d + (?: - 16 | -4 | -64)? $ /'. Dovresti anche considerare se vuoi abbinare ogni tipo di oggetto e, in tal caso, aggiornare di conseguenza l'ultimo gruppo di partite. Nel caso più generico può essere solo '/^tcm: \ d + - \ d + (?: - \ d +)? $ /'. Infine: tieni presente che un URI TCM ** può anche fare riferimento a una versione specifica e quindi terminare con '-v123'. quindi questo porterebbe a '/^tcm: \ d + - \ d + (?: - \ d +)? (?: - v \ d +)? $ /' –

5

Ho usato questo in C# per convalidare un Tcm Uri (e credo che questo è anche il modo TcmUri.IsValid() è farlo)

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

Se si desidera convalidare che è una pagina o un componente, quindi itemType dovrebbe essere vuoto, 16 o 64.

+0

Grazie Nuno per averlo fornito in C#. Aiuta molto. +1 per la risposta. –

9

La regex xdazz fornita è ottima per la corrispondenza degli esempi che hai fornito. Ma per una gestione più generica potresti voler:

  1. rimuovere le cardinalità esatte da, poiché potrebbero esserci più o meno cifre in ciascuno dei numeri. Quindi /^tcm:\d+-\d+(?:-16|-4|-64)?$/
  2. valutare se si desidera abbinare ogni tipo di elemento e, in tal caso, aggiornare di conseguenza l'ultimo gruppo di corrispondenza. Nel caso più generico può essere solo /^tcm:\d+-\d+(?:-\d+)?$/
  3. tenere presente che un URI TCM può anche fare riferimento a una versione specifica e quindi terminare con -v123. quindi ciò porterebbe a /^tcm:\d+-\d+(?:-\d+)?(?:-v\d+)?$/

Naturalmente questo ti avvicina molto alla risposta di Nuno, che ha il vantaggio aggiunto che i gruppi di corrispondenza hanno nomi leggibili.

+0

Grazie per aver postato come risposta. +1 per risposta generica. –

Problemi correlati