“Javascript匹配”;rgb(xx,xx,xx)“;使用正则表达式正则表达式?

“Javascript匹配”;rgb(xx,xx,xx)“;使用正则表达式正则表达式?,javascript,regex,Javascript,Regex,如果有人能为我指出正确的方向,我将不胜感激。我有一个数组“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)}"];

如果有人能为我指出正确的方向,我将不胜感激。我有一个数组“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);

请澄清你的问题(见我上面的评论),暂时试试这样的方法。(但这不会在第一个元素中提供多种rgb颜色…)


请澄清你的问题(见我上面的评论),暂时试试这样的方法。(但这不会在第一个元素中提供多种rgb颜色…)


我今天正在努力解决这个问题,并为这个问题提供了一个稍微简化的解决方案,它使用了一个稍微不同的正则表达式以及JavaScripts的“match”函数(我已经将它包装在一个函数中,以便我们可以根据需要重用此功能):

现在只需使用要检查的值调用函数。例如

parseRGB( '-moz-linear-gradient( top, rgb(68, 68, 68), rgb(153, 153, 153))' );
将返回以下数组:

[ "rgb(68, 68, 68)", "rgb(153, 153, 153)" ]   
需要注意的几点:

  • 如果未找到RGB匹配项,此函数将返回null
  • JavaScripts匹配字符串函数将自动将所有发生的事件放入一个数组中。它可以将正则表达式作为参数
  • 如果要检查的字符串中存在多个rgb值,则可以处理这些值

希望这能对其他人有所帮助。

我今天正在努力解决这个问题,并为这个问题提供了一个稍微简化的解决方案,它使用了一个稍微不同的正则表达式以及JavaScripts的“match”函数(我已经将它包装在一个函数中,以便我们可以根据需要重用此功能):

现在只需使用要检查的值调用函数。例如

parseRGB( '-moz-linear-gradient( top, rgb(68, 68, 68), rgb(153, 153, 153))' );
将返回以下数组:

[ "rgb(68, 68, 68)", "rgb(153, 153, 153)" ]   
需要注意的几点:

  • 如果未找到RGB匹配项,此函数将返回null
  • JavaScripts匹配字符串函数将自动将所有发生的事件放入一个数组中。它可以将正则表达式作为参数
  • 如果要检查的字符串中存在多个rgb值,则可以处理这些值

希望这对某人有所帮助。

匹配“rgb(24,23,12)”的正则表达式模式类似于“rgb\(d+,d+,d+)”,假设为十进制值。没有发布答案,因为我没有得到你的循环,因为你似乎有多个rgb值在一个字符串中,并推动整个字符串。。。您是否仅将魔杖指向puch匹配的部分?如果是,第一场比赛还是所有比赛?请澄清你的问题:你为什么要休息?是否仅捕获最后一个rgb(…)?在这个例子中,期望的输出是什么?@EugeneRyabtsev,我只想冲压匹配的零件。因此,如果数组有5个元素,并且所有元素都有“rgb(xx,xx,xx)”标记,那么我只想将“rgb(xx,xx,xx)”复制到rgbArr。谢谢。@Combustion007,在您的示例输入中,id1前面的逗号周围没有引号,这导致数组的第一个元素包含两个rgb值。是否如预期的那样?如果是的话,你想要两者吗?是否有顺序的首选项?与“rgb(24,23,12)”匹配的正则表达式模式类似于“rgb\(d+,d+,d+)”,假设为十进制值。没有发布答案,因为我没有得到你的循环,因为你似乎有多个rgb值在一个字符串中,并推动整个字符串。。。您是否仅将魔杖指向puch匹配的部分?如果是,第一场比赛还是所有比赛?请澄清你的问题:你为什么要休息?是否仅捕获最后一个rgb(…)?在这个例子中,期望的输出是什么?@EugeneRyabtsev,我只想冲压匹配的零件。因此,如果数组有5个元素,并且所有元素都有“rgb(xx,xx,xx)”标记,那么我只想将“rgb(xx,xx,xx)”复制到rgbArr。谢谢。@Combustion007,在您的示例输入中,id1前面的逗号周围没有引号,这导致数组的第一个元素包含两个rgb值。是否如预期的那样?如果是的话,你想要两者吗?有什么需要点菜的吗?谢谢你帮我。我想把所有“rgb(xx,xx,xx)”匹配的标签从“cArr”元素复制到“rgbArr”。因此,如果“cArr”数组有5个元素,并且所有元素都有“rgb(xx,xx,xx)”标记,那么我只想将“rgb(xx,xx,xx)”复制到rgbArr。谢谢。好的,所以决定:)你原来的问题在第一个元素中有多个rgb(…),我的代码不能处理这个问题。但现在你改变了问题。因此,如果您知道每个元素最多有1个rgb(),那么我的代码会满足您的要求。谢谢。我意识到这是一个打字错误,直到你询问我才注意到。所以我把它修好了。这真的很有帮助。非常感谢。谢谢你帮助我。我想把所有“rgb(xx,xx,xx)”匹配的标签从“cArr”元素复制到“rgbArr”。因此,如果“cArr”数组有5个元素,并且所有元素都有“rgb(xx,xx,xx)”标记,那么我只想将“rgb(xx,xx,xx)”复制到rgbArr。谢谢。好的,所以决定:)你原来的问题在第一个元素中有多个rgb(…),我的代码不能处理这个问题。但现在你改变了问题。因此,如果您知道每个元素最多有1个rgb(),那么我的代码会满足您的要求。谢谢。我意识到这是一个打字错误,直到你询问我才注意到。所以我把它修好了。这真的很有帮助。谢谢。