2012-10-07 2 views
5

자바 스크립트에서 Regex를 사용하여 tridion TCM ID를 확인하면 간단하지만 조용하게 보이지만 불행히도이 작업을 수행하지 못했습니다.Regex tridion tcm id의 유효성을 검사

나는 tcm id의 유효성을 검사하는 모든 가능한 방법을 시도했습니다. 다음은

마지막 시도 정규식입니다 : -

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

, TCM IDcomponent 또는 SG 또는 Page 될 수 있습니다.

유효한 TCM 아이디의이

  1. TCM 있습니다 : 123-5678-4
  2. TCM : 123-5678-64
  3. TCM : 123-5678-16
  4. TCM : 123-5678

tcm id의 유효성을 검사하는 가장 좋은 정규식을 제안하십시오.

답변

8

시도 :

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

내 친구에게 고마워. 그것은 매력처럼 작동했습니다. 좋은 대답은 –

+0

+1입니다. –

+7

각 숫자에 더 많거나 적은 숫자가있을 수 있으므로 정규식에서 정확한 카디널리티를 제거 할 수 있습니다. 그래서'/^tcm : \ d + - \ d + (? : - 16 | -4 | -64)? $ /'. 또한 모든 항목 유형을 일치시키려는 경우 고려해야하며 일치하는 경우 마지막 일치 그룹을 업데이트하십시오. 가장 일반적인 경우에는'/^tcm : \ d + - \ d + (? : - \ d +)? $ /'일 수 있습니다. 마지막으로 : TCM URI **는 특정 버전을 참조 할 수 있으므로'-v123'으로 끝낼 수 있음을 명심하십시오. 그래서'/^tcm : \ d + - d + (? : - \ d +)? (? : -v \ d +)? $ /' –

5

은 내가 TCM 열린 우리당의 유효성을 검사하는 C#에서이를 사용 (난이도 TcmUri.IsValid()이 그 일을하는 방법이라고 생각) 당신이 있음을 확인하려면

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

페이지 또는 구성 요소 인 경우 itemType은 비어 있어야합니다 (예 : 16 또는 64).

+0

C#에서 제공 해주신 Nuno에게 감사드립니다. 그것은 많은 도움이됩니다. 대답에 +1. –

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의 대답에 가까워지며, 일치 그룹에 읽기 쉬운 이름이 있다는 이점이 있습니다.

+0

답변을 게시 해 주셔서 감사합니다. +1 일반 응답. –

관련 문제