2011-10-01 3 views
1

하나 이상의 괄호 사이에있는 텍스트를 모두 파싱하고 배열을 반환하려고합니다. 예를 들어javascript에서 하나 이상의 괄호 사이의 모든 정규식을 구문 분석하는 방법

: 나는 내 팀에 삼명 했어

var string = "((CID:34746) OR (CID:8097)) ((CID:34277 OR CID:67300))"; 
var regex = /\(([^()]+)\)/g; 
var results = string.match(regex); 
// should result in ["CID:34746","CID:8097","CID:34277 OR CID:67300"] 
// but instead is ["(CID:34746)", "(CID:8097)", "(CID:34277 OR CID:67300)"] 

는 해결책을 찾기 위해 시도 아무도 없습니다. 나는 내가 찾을 수있는 모든 것들을 살펴 봤다. (This one is where I posted the above regex from ...)

가장 가까운 것은 다음과 같습니다./([^()] +)/g.

답변

5

.match()g lobal 수정자를 사용하면 전체 일치 항목 배열 만 반환합니다. 대신 .exec()[MDN] 사용

var match, 
    results = []; 

while(match = regex.exec(string)) { 
    results.push(match[1]); 
} 
1

귀하의 정규식 당신이 바로 그것을 사용하지 않는 올바른 :

var string = "((CID:34746) OR (CID:8097)) ((CID:34277 OR CID:67300))"; 
var regex = /\(([^()]+)\)/g; 
var desiredResults = []; 
var results; 
while(results = regex.exec(string)) { 
    desiredResults.push(results[1]); 
} 
// now desiredResults is ["CID:34746","CID:8097","CID:34277 OR CID:67300"] 
관련 문제