2013-02-16 105 views
0

尝试将RGBA转换为HEX,放弃透明度。有许多方法可以将RGB转换为HEX,而将HEX取出RGBA最简单的方法是简单地丢弃alpha的内容。JS:删除第n个元素之间的所有内容

希望把这样的:

rgba(255,255,255,0.95)

进入这个:

rgb(255,255,255)

然后用这个: http://haacked.com/archive/2009/12/29/convert-rgb-to-hex.aspx

得到#FFFFFF

对于直接转换也是如此,这看起来像是一个简单的子字符串操作,目前还没有。

回答

2

也许你正在寻找这样的:

input.replace(/rgba\((\d+,\d+,\d+),[\d.]+\)/,"rgb($1)") 

Exlanation的正则表达式:

  • / - 字面rgba(
  • ( - - 正则表达式
  • rgba\(开始捕获组的开始
  • \d+,\d+,\d+ - 三组数字,用逗号
  • 分离
  • ) - 多一个逗号,数字和小数点基和闭括号
  • / - - 捕获组
  • ,[\d.]+\)的端正则表达式的端

替换:字面rgb(,捕获的字符串字面)

为了使这个表达式更普遍applicabl即,允许空格在规范允许它:

input.replace(/rgba\((\s*\d+\s*,\s*\d+\s*,\s*\d+\s*),\s*[\d.]+\s*\)/,"rgb($1)") 
+0

我只是想,这两个动态,并与'“RGBA(255,255,255,0.95)”'和它没有工作。我知道你要去哪里,但我认为在那里有一个错字。 – Wesley 2013-02-16 07:16:31

+0

@Wesley忘了小数点 – 2013-02-16 07:18:05

+0

明白了,就像一个魅力。谢谢你!你回答了我很多深夜的问题:) – Wesley 2013-02-16 07:18:30