所以我试图通过自己的修改版本找到并替换css的所有颜色值。在这种情况下,我专注于具有相同值的所有颜色代码。
用#333替换#333333。
我的代码如下:
var regex = textCssMini1.replace(/\#\d{6}/g,"$1");
我的代码允许我找到#333333并将其替换为$ 1。但是我想用#333替换它。
注意:我的字符串中存在多个颜色代码实例,例如#000000,因此我想将它应用于任何可能性。
答案 0 :(得分:2)
您可以将以下正则表达式用于捕获组 replace(/#([\da-f])\1([\da-f])\2([\da-f])\3/ig, "#$1$2$3")
var textCssMini1 = '#111111 #123456 #ffffff #225588 #235588 #333333 #gggggg ( not valid color code )';
var regex = textCssMini1.replace(/#([\da-f])\1([\da-f])\2([\da-f])\3/ig, "#$1$2$3");
document.write(regex);

<强> Regex explanation 强>
答案 1 :(得分:1)
var regex = textCssMini1.replace(/\#(\d){6}/g,"#$1$1$1");
答案 2 :(得分:1)
这将有效
var regex = textCssMini1.replace(/#([\da-f])\1{5}/ig,"#$1$1$1");
JS Demo
var textCssMini1 = '#111111 #123456 #ffffff';
var regex = textCssMini1.replace(/#([\da-f])\1{5}/ig,"#$1$1$1");
document.write(regex);
&#13;
如果您想单独替换每个RGB
值
var regex = textCssMini1.replace(/#([\da-f])\1([\da-f])\2([\da-f])\3/ig,"#$1$2$3");
答案 3 :(得分:1)
这应该是你需要的:
var regex = textCssMini1.replace(/\#(.)\1(.)\2(.)\3/i,"#$1$2$3");
匹配时,如果是一个字符串,其中#chac后跟3个2个相同字符的序列,并且匹配将被char替换为3个sigle字符。
测试:
var tomin =document.querySelector('#tominify').innerHTML;
var minified = tomin.replace(/\#(.)\1(.)\2(.)\3/ig,"#$1$2$3");
document.querySelector('#minicolor').innerHTML=minified;
Sample css to test regex minify colors:
<p id="tominify">
test1 {
color: #442299;
background-color: #442279;
}
test2 {
color: #333333;
background-color: #111112;
}
</p>
<p id='minicolor'>
</p>