0

誰かがこれについて正しい方向に私を向けることができれば、私は非常に感謝しています. 配列「cArr」があり、この配列内に 2 つの要素があります。私がやりたいことは、「rgb(xx,xx,xx)」を照合し、それを配列「rgbArr」にプッシュすることです。私が遭遇している問題は正規表現にあります。

これが私のコードです:

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);
4

2 に答える 2

2

私は今日この問題に取り組んでおり、JavaScriptの「match」関数と一緒にわずかに異なる正規表現を使用するこの問題の少し単純化された解決策を持っています(必要に応じてこの機能を再利用できるように関数にまとめました) :

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

    return rgbArray;
}

次に、確認する値を使用して関数を呼び出すだけです。例えば

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

これは次の配列を返します:

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

注意すべきいくつかのこと:

  • RGBの一致が見つからない場合、この関数はnullを返します。
  • JavaScriptの文字列一致関数は、すべてのオカレンスを自動的に配列に入れます。パラメータとして正規表現をとることができます。
  • チェックする文字列に複数のrgb値が存在する場合、これは複数のrgb値を処理できます。

これが誰かを助けることを願っています。

于 2012-10-18T13:01:59.820 に答える
1

あなたの質問を明確にしてください(上記の私のコメントを参照してください)、当面はこのようなことを試してください。(しかし、これは最初の要素に複数の RGB カラーを与えません...)

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);​
于 2012-05-16T07:06:14.120 に答える