1
RegEx = new RegExp(sourcevalue, "gi");

temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);

ここでsourcevalue = rgb(255,0,0)、、targetvalue = #FFFFFFしかし、sourcevalueに置き換えられていないtargetvalue、なぜですか?

4

2 に答える 2

4

かっこを適切にエスケープしなかったことが原因である可能性があります。

var sourcevalue = "rgb\\(255,0,0\\)";

括弧は、一致のグループ化/逆参照に使用されます。それらを文字通り一致させたい場合は、でエスケープする必要があります\sourcevalueは文字列であり、文字列内のエスケープ文字でもあるため\、文字列を作成するには円記号をエスケープする必要があります。

それ以外の場合、式は一致しますが、一致rgb255,0,0しませんrgb(255,0,0)

于 2012-05-10T09:54:00.340 に答える
1

sourcevalueは正しいJavascript正規表現ですが、期待どおりに機能していないためです。()括弧のような正規表現には特殊文字があります。これらは、正規表現の一部をグループ化するために使用されます。それらを「文字通りの」意味で使用するには、円記号を使用してそれらをエスケープする必要があります

var RegEx = /rgb\(255,0,0\)/gi;
于 2012-05-10T09:54:27.397 に答える