RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
ここでsourcevalue = rgb(255,0,0)
、、targetvalue = #FFFFFF
しかし、sourcevalue
に置き換えられていないtargetvalue
、なぜですか?
RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
ここでsourcevalue = rgb(255,0,0)
、、targetvalue = #FFFFFF
しかし、sourcevalue
に置き換えられていないtargetvalue
、なぜですか?
かっこを適切にエスケープしなかったことが原因である可能性があります。
var sourcevalue = "rgb\\(255,0,0\\)";
括弧は、一致のグループ化/逆参照に使用されます。それらを文字通り一致させたい場合は、でエスケープする必要があります\
。sourcevalue
は文字列であり、文字列内のエスケープ文字でもあるため\
、文字列を作成するには円記号をエスケープする必要があります。
それ以外の場合、式は一致しますが、一致rgb255,0,0
しませんrgb(255,0,0)
。
sourcevalueは正しいJavascript正規表現ですが、期待どおりに機能していないためです。()括弧のような正規表現には特殊文字があります。これらは、正規表現の一部をグループ化するために使用されます。それらを「文字通りの」意味で使用するには、円記号を使用してそれらをエスケープする必要があります
var RegEx = /rgb\(255,0,0\)/gi;