2012-05-16 2 views
0

누군가가이 문제에 대해 올바른 방향으로 나를 가리킬 수 있다면 크게 감사하겠습니다. 나는 배열 "cArr"을 가지고 있고이 배열 안에는 두 개의 원소가있다. 내가하고 싶은 것은 "rgb (xx, xx, xx)"를 일치시키고 "rgbArr"배열로 밀어 넣는 것입니다. 내가 만나는 문제는 regEx입니다. 같은 시간 인 시도에 뭔가 (위 내 댓글을 보인다)정규식 regEx가있는 "rgb (xx, xx, xx)"와 일치하는 자바 스크립트?

var cArr = ["id0{shape:round,rgb(24,23,12)}","id1{shape:long,weight:heavy,rgb(20,20,20)}","id2{shape:elongated,weigth:light,rgb(15,24,8)}"]; 


for(var i=cArr.length -1; i>=0; i--) 
{ 
    if(cArr[i].match(matchColors)) 
    { 
    rgbArr.push(cArr[i]); 
    break; 
    } 
} 

console.log(rgbArr); 
+0

"rgb (24,23,12)"와 일치하는 정규식 패턴은 10 진수 값으로 가정하고 "rgb \\ (d +, d +, d + \\)"와 유사합니다. 한 문자열에 여러 개의 rgb 값이있는 것처럼 보이고 전체 문자열을 밀어 넣는 것처럼 루프를 얻지 못하기 때문에 답변을 게시하지 않습니다 ... 부분 일치하는 부분 만 바꿀 것인가? 그렇다면 먼저 일치하거나 모두 일치합니까? –

+0

질문을 명확히하십시오. 왜 휴식을 취하십니까? 마지막 rgb (...) 만 잡으시겠습니까? 이 예제에서 원하는 출력은 무엇입니까? – Gavriel

+0

@EugeneRyabtsev, 필자는 일치하는 부분 만 펀치하고 싶습니다. 따라서 배열에 5 개의 요소가 있고 이들 모두에 "rgb (xx, xx, xx)"태그가 있으면 "rgb (xx, xx, xx)"를 rgbArr에 복사하고 싶습니다. 고맙습니다. – Combustion007

답변

1

질문을 명확히하십시오 :

여기 내 코드입니다. 오늘이 문제와 씨름했다

var matchColors=/.*?(rgb\([^)]*\)).*/; 

var cArr = ["id0{shape:round,rgb(24,23,12)},id1{shape:long,weight:heavy,rgb(20,20,20)}","id2{shape:elongated,weigth:light,rgb(15,24,8)}","sdf"]; 

var rgbArr=[]; 

for(var i=cArr.length -1; i>=0; i--) { 
    if(cArr[i].match(matchColors)) { 
     var x = cArr[i].replace(matchColors,"$1"); 
     rgbArr.push(x); 
//  break; 
    } 
} 

console.log(rgbArr);​ 
+0

나를 도와 주셔서 감사합니다. "rgb (xx, xx, xx)"일치 태그를 "cArr"요소에서 "rgbArr"로 복사하고 싶습니다. 따라서 "cArr"배열에 5 개의 요소가 있고 이들 모두에 "rgb (xx, xx, xx)"태그가 있으면 "rgb (xx, xx, xx)"를 rgbArr에 복사하고 싶습니다. 고맙습니다. – Combustion007

+0

좋아, 그럼 결정 :) 원래 질문에 첫 번째 요소에서 여러 rgb (...), 내 코드를 처리하지 않습니다. 하지만 이제는 질문을 변경했습니다. 그래서 각 요소가 최대 1 rbb()를 가질 것이라는 것을 알면 내 코드가 요청한 것을 수행합니다. – Gavriel

+0

감사합니다. 나는 당신의 질문이있을 때까지 제가 눈치 채지 못했던 오자임을 깨달았습니다. 그래서 나는 그것을 고쳤다. 이것은 정말로 도움이됩니다. 고마워. – Combustion007

2

(그러나 이것은 당신에게 첫번째 요소에 여러 개의 RGB 색상 ...를 제공하지 않습니다) 및 정기 약간 다른를 사용하여이 문제에 약간 더 단순화 된 솔루션을

function parseRGB (string) { 
    var rgbRegex = /(rgb\([^)]*\))/gi; 
    var rgbArray = string.match(rgbRegex); 

    return rgbArray; 
} 

지금 간단하게 검사 할 값으로 함수를 호출 : 자바 스크립트 '일치'기능과 함께 식 (필요에 따라 우리가이 기능을 다시 사용할 수 있도록 내가 함수에 싸서있다). 예 : 더 RGB 일치는이 기능이 null를 돌려줍니다 발견되지 않으면

  • :

    [ "rgb(68, 68, 68)", "rgb(153, 153, 153)" ] 
    

    몇 가지주의해야 할 다음 배열을 반환합니다

    parseRGB('-moz-linear-gradient(top, rgb(68, 68, 68), rgb(153, 153, 153))'); 
    

    .

  • JavaScript 일치 문자열 기능은 모든 발생을 자동으로 배열에 넣습니다. 정규 표현식을 매개 변수로 사용할 수 있습니다.
  • 검사 할 문자열에 여러 개의 rgb 값이 있으면 처리 할 수 ​​있습니다.

희망이 있으면 도움이 될 것입니다.

관련 문제