2012-02-02 3 views
2

양식 POST 내의 키 (Control ClientId)와 일치하는 정규식이 내 코드에 있습니다. 양식 데이터의 모든 키를 순환시키고 일치가 발견되면 필요한 조치를 수행합니다.ClientID의 정규 표현식 일치 ID

그러나 정규식은 필자가 필요로하는 것보다 더 많이 일치합니다. 이는 요청할 때마다 실행되며 불필요한 코드를 실행하는 경우 실행됩니다.

Match match = Regex.Match(key.ToLower(), @"(?!\$)(?:[a-z0-9]+)$", 
          RegexOptions.Compiled); 
coreectly

master$maincontentplaceholder$ucsearchresults$hdnvalue 
master$maincontentplaceholder$ucsearchresults$hdnvalue2 
master$maincontentplaceholder$ucsearchresults$hdnvalue3 

난 후 케이스의 형태는 반환

case: "hdnvalue" 
case: "hdnvalue2" 
case: "hdnvalue3" 

제어 ID 여분 키 다수의 일치와 switch 문이 일치되어

샘플 스트링 항상 처리가 필요하지는 않습니다. 정규식 내에서 이들을 제외 할 수 있다면 좋을 것입니다. 당신은 더 공식적으로 허용되는 형식을 설명하는 것

master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue 
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue2 
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue3 
+1

왜 대신에 모든 것을 노력하는, 작업 할 컨트롤의 id를 필터링 할 수있는 조건부 논리를 작성하지 않습니다 정규 표현식. 긴 광고 귀하의 정규식 일치하는 올바른 ID를 포함, 정규식 결과를 필터링 그냥 괜찮을거야, 안 그래?! – Flowerking

+0

나는 위의 메신저 시도를 시도하면서 아마 너의 꽃가루를 잘 자르는 것 같다. 여분의 키 값이 비어 있으므로 게시물 값을 테스트하여 제외 할 수 있습니다. – michaelbinks

답변

0

그렇지 않으면 /이/정규식을 사용하려면 lastIndexOf에서도보다 나은 ("$")을 할 수

using System; 

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string text = "master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue"; 
      string id = text.Substring(text.LastIndexOf("$") + 1); 
      Console.WriteLine(id); 
      Console.ReadLine(); 
     } 
    } 
} 
1

(별도의 클라이언트 ID 수준 $ucfilter주의)이 정규식은 준 기준을 통과 할 것이다 :

^([a-z0-9]+\$){3}[a-z0-9]+$