2013-07-25 3 views
0

내 HTML 페이지 내부의 샘플 토큰 다음 한 자바 스크립트 정규 표현식 :중괄호, 등호 및

{#abc,def#} 

내가 같이,이 토큰에서 텍스트를 추출 할 필요가 자바 스크립트를 사용 :

abc,def 

나는이 등록 특급 사용하고 있습니다 :

/(({#).*(?=#})) /g 

을하지만 두 그룹의 일치 :

 
group1: {#test, date 
group2: {# 

올바른 그룹과 어떻게 일치시킬 수 있습니까?

답변

5
> '{#abc,def#}'.match(/{#(.*?)#}/)[1] 
'abc,def' 

UPDATE

> var xs = '{#abc,def#} foobar {#ghi,jkl#}'.match(/{#(.*?)(?=#})/g); 
> for (var i = 0; i < xs.length; i++) xs[i] = xs[i].substr(2); 
> xs 
[ 'abc,def', 'ghi,jkl' ] 

또는 한 - 라이너 : 모든 브라우저/구현을 지원하려면

var tokens = (str.match(/{#(.*?)(?=#})/g) || []).map(function(match) 
{ 
    return match.substr(2); 
}); 
console.log(tokens);//[ 'abc,def', 'ghi,jkl' ] 

것은, 당신이 배열 proptotype을 확대해야 할 수도 있습니다 :

if (!Array.prototype.map) 
{ 
    Array.prototype.map = function(callback) 
    { 
     if (typeof callback !== 'function') 
     { 
      throw new TypeError(callback + ' is not a function'); 
     } 
     for(var i = 0;i<this.length;i++) 
     { 
      this[i] = callback(this[i]); 
     } 
     return this.slice(); 
    }; 
} 
+0

이것은''{# abc, def #} foobar {# ghi, jkl #} '와 같은 문자열로는 실패합니다.' –

+0

@EliasVanOotegem how? –

+1

@ m.buettner : js에는 그룹과 일치하는 일치 항목이 없습니다. 그들 모두를 포착하기 위해 간부/교체에 의지해야합니다. – georg