RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
где sourcevalue = rgb(255,0,0)
и targetvalue = #FFFFFF
, но sourcevalue
не заменяется targetvalue
, почему?RegEx .Надеть() не работает
RegEx = new RegExp(sourcevalue, "gi");
temp[i] = Selectors[i].cssText.replace(RegEx, targetvalue);
где sourcevalue = rgb(255,0,0)
и targetvalue = #FFFFFF
, но sourcevalue
не заменяется targetvalue
, почему?RegEx .Надеть() не работает
Потому что sourcevalue является правильным регулярным выражением Javascript, но оно не работает так, как вы ожидали. В регулярном выражении есть специальные символы, такие как круглые скобки(). Они используются для группировки частей регулярных выражений. Для того, чтобы использовать их с их «буквальное» meaing вам придется избежать их, используя обратную косую черту
var RegEx = /rgb\(255,0,0\)/gi;
спасибо за ответ – gaurav
Скорее всего, потому что вы не миновал скобку правильно:
var sourcevalue = "rgb\\(255,0,0\\)";
Скобки используются для группировки/обратно ссылающихся матчей. Если вы хотите совместить их буквально, вам нужно с ними связаться \
. Так как является строкой, а \
является символом escape в строке, вы должны избегать обратной косой черты, чтобы создать литерал.
В противном случае выражение будет соответствовать rgb255,0,0
, но не rgb(255,0,0)
.
спасибо за ответ – gaurav
Не могли бы вы сделать то же самое на jsfiddle но с тривиальными переменными, а не 'Искатели [я] .cssText' – zerkms
Показать все соответствующие код. Parens - это специальные символы в регулярных выражениях, вы избегаете их должным образом? – Jon
Почему бы изменить 'sourcevalue'? Результат находится в 'temp [i]'. Ты закодировал это! – leppie