2013-02-17 14 views
1

대괄호 안에 텍스트를 추출하고 싶습니다. 문자열은 다음과 같습니다 : 그것은 내 자바 스크립트는 다음과 같이 보이는둥근 괄호 사이의 텍스트를 추출하는 방법은 무엇입니까?

Some text: 5 (some numbers) + some more numbers 
asdfkjhsd: 7 (6578) + 57842 
djksbcuejk: 4 (421) + 354 

에 있습니다 :

var fspno = document.getElementsByTagName("td")[142].innerText; 
var allfsp = fspno.match(); 

나는이 스크립트 배열에 괄호 내의 모든 숫자를 수집 할. 내가 사용했다

fspno.match(/\((.*?)\)/g); 

그러나 괄호와 함께 반환됩니다. 나는 괄호 안의 텍스트 만 원한다. 도움이 될 것입니다. 감사.

답변

1

, 일치 항목 수집 :

re = /\((.+?)\)/g 
found = [] 
fspno.replace(re, function($0, $1) { found.push($1)}) 
re = /[^()]+(?=\))/g 
found = fspno.match(re) 
+0

감사 :은 특정 경우에는, 그러나, 그것은 그룹을 포함하지 않는 및 String.match와 함께 사용할 수 있도록 표현을 다시 작성하는 것이 가능하다. 이것은 완벽하게 작동했습니다. –

0
/\((.*?)\)/.exec('7 (6578) + 57842')[1] 
0

가장 쉬운 방법은 g 옵션을 해제하고 경기에 [1] 인덱스를 얻을 수 있습니다 예 :

fspno.match(/\((.*?)\)/)[1]; 

그러나 아무것도 발견되지 않으면 그 오류를 반환합니다, 그래서 만약 돈 당신이 괄호 부분이 없거나 있을지 '는 t 알고, 또는이 관용구 사용할 수 있습니다

(fspno.match(/\((.*?)\)/) || [,""])[1]; 

일치하는 항목을 찾을 수없는 경우 ""를 반환합니다.

var match, matches=[]; while (match = /\((.*?)\)/g.exec(s)) matches.push(match[1]); 
// matches is now an array of all your matches (without parentheses) 
0

당신은 g 옵션이 필요하지 않을 수 있습니다 : 당신이 g 옵션이 필요 알고있는 경우

당신은 사용할 수 있습니다 (즉, 괄호 안의 하나 이상의 일이있을 수 있습니다 당신은 그들 모두를 원하는).

re = /\((.+?)\)/g 
found = [] 
while(r = re.exec(fspno)) 
    found.push(r[1]) 

또는 남용 String.replace에 그러므로 루프에서 exec를 사용해야 하나 fiddle here

또는 한 번에 모든 그룹의 모든 경기를 추출하는 자바 스크립트 방법은 없습니다

var fspno = "7 (6578) + 57842"; 
var found = fspno.match(/\((.*?)\)/); 

if (found) { 
    var found1 = found[1]; 
    alert(found1); 
} 
관련 문제