2010-10-25 61 views
1

這裏是我試圖編輯使用jQuery的CSS的格式。Javascript正則表達式需要

/*8d*/ .class{color:#444444;} 
/*5d*/ .class{background-color:#444444;} 
/*3f*/ .class{color:#444444;} 
/*9d*/ .class{color:#444444;} 

我想用正則表達式替換幾個整行。例如,如何選擇第5d行替換爲「/ * 5d */.new {border:#676767;}」,以便最終結果是;

/*8d*/ .class{color:#444444;} 
/*5d*/ .new{border:#676767;} 
/*3f*/ .class{color:#444444;} 
/*9d*/ .class{color:#444444;} 

謝謝。

+2

正則表達式真的是正確的工具嗎? – alex 2010-10-25 02:27:56

+0

不確定...只需要做一個查找和替換這個文本框的內容。可以真的使用任何東西...有沒有什麼辦法正則表達式可以取代兩個關鍵字/子串之間的內容? – Norman 2010-10-25 02:35:11

回答

3

如果你想更換5d線,請搜索:

\/\*(5d)\*\/.* 

/*\1*/ .new{border:#676767;} 

注意\1是一個反向引用5d更換比賽。

+0

很好的工作..謝謝! :) – Norman 2010-10-25 02:43:39

+0

errr ..我如何用js變量替換「5d」?對不起,已經試過Google搜索:) – Norman 2010-10-25 03:07:31

+0

當你設置正則表達式模式,你可以這樣做:var regex = new RegExp(「\/\ *(」+ yourVar +「)\ * \ /.*」); '......假設'yourVar'包含'5d'或類似的東西。 – Chetan 2010-10-25 06:03:49

0
css.replace(/\/\*5d\*\/.*/, '/*5d*/.new{border:#676767;}'); 

當然,如果你有你的CSS格式,在一行上有一條規則。如果你擁有了它在多個行,你將不得不使用這樣的:

css.replace(/\/\*5d\*\/{.*?}/s, '/*5d*/.new{border:#676767;}'); 

但是,如果你在你裏面治事情變得更加複雜,有意見,我不認爲正則表達式是不夠的。

+0

不幸的是,大多數(所有?)JS引擎中的RE都不支持look-behind。 – outis 2010-10-25 02:55:04

+0

我檢查了ECMA-262 v5,看起來只是預先指定。感謝您的信息。 – 2010-10-25 03:13:00