如果有人能指出我正确的方向,我将非常感激。我有一个数组“cArr”,在这个数组中我有2个元素。我想做的是匹配“rgb(xx,xx,xx)”并将其推送到数组“rgbArr”;我遇到的问题是regEx。
这是我的代码:
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 :(得分:2)
我今天正在努力解决这个问题,并且针对这个问题提供了一个稍微简化的解决方案,它使用了一个稍微不同的正则表达式以及JavaScripts的匹配功能(我已经将它包装在一个函数中,以便我们可以重用这个功能根据要求):
function parseRGB ( string ) {
var rgbRegex = /(rgb\([^)]*\))/gi;
var rgbArray = string.match(rgbRegex);
return rgbArray;
}
现在只需使用您要检查的值调用该函数。 E.g。
parseRGB( '-moz-linear-gradient( top, rgb(68, 68, 68), rgb(153, 153, 153))' );
将返回以下数组:
[ "rgb(68, 68, 68)", "rgb(153, 153, 153)" ]
有几点需要注意:
希望这有助于某人。
答案 1 :(得分: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);