2009-10-26 7 views
1

특정 패턴의 요소 ID를 보이는 javascript 함수가 있습니다. 그러나 그것은 또한 다음과 일치,JavaScript : string.match 정규식 도움말

DataList[-1].MemberId 
DataList[-2].MemberId 

을 그리고 그것을 수행합니다 :

if (f.elements[i].id.match(/DataList\[-\d{3}|\d{3}\]\.MemberId/)) { 
    //do something 
} 

그것은 이들과 같은 ID를 가진 요소와 일치해야합니다 : 그래서 나는 다음과 같은 스크립트가

DataList[-1].FirstName 
DataList[-2].FirstName 

하는 나는 싫어.

위의 정규 표현식을 살펴보고 잘못된 점을 지적 해 주시겠습니까?

감사합니다,

컬린

+0

에 UPU 일치하는 것 때문에 1-3를 지원하려면 얼마나 많은 #S 결정, 당신은을 변경해야 할 것 '\ d {3}'에서'\ d {1,3}'까지. 무슨 일이 일어나고 있는지에 대한 좋은 설명은 @ Macarse의 대답을 참조하십시오. –

답변

2

봅니다 그룹 당신의 자리가 일치하는 ^와 시작 부분에와 $와 마지막에 당신의 정규식을 고정 1-3 숫자 대신 3의 허용합니다.

if (f.elements[i].id.match(/^DataList\[(-\d{1,3}|\d{1,3})\]\.MemberId$/)) { 
    //do something 
} 

"DataList [-123"또는 "123] .MemberId"가 포함 된 모든 것과 일치했습니다.

if (f.elements[i].id.match(/^DataList\[-?\d{1,3}\]\.MemberId$/)) { 
    //do something 
} 
+1

감사합니다. 첫 번째 솔루션을 사용하고 있습니다. –

2

또는 말하는 :

같은 일을 수행 더 간단한 전체 정규식입니다

DataList\[-\d{3} OR \d{3}\]\.MemberId/ 

를이 정규식이 제대로 일치 :

DataList\[-?\d{1,3}\]\.MemberId 
+0

Macarse에게 감사드립니다. 이것이 문제의 원인입니다. –

1

나의 제안

if (f.elements[i].id.match(/DataList\[-[0-9]{1,3}\]\.MemberId/)) { 
    } 

는 {} 당신은 당신이 나열된 요소 이름과 일치하도록 게시 된 정규식의 경우 [999]