昨天在做mergeCSS的時候遇到兩個正規匹配的問題,也花了不少的時間,最後在CSS森林群的CE 同學幫助下,才完成了這倆正則,特別記錄下,以後可能也會用到。
第一個是匹配圖片路徑的問題,要處理的字串是:
以下為引用的內容: |
我一開始寫的是:
以下為引用的內容: |
得到的結果為:
以下為引用的內容: |
可以看到,把兩張圖片配對成了一個,結果不是所希望得到的。把它改為惰性匹配,如下:
以下為引用的內容: |
得到的結果為:
以下為引用的內容: url(demo.jpg); |
配對到了兩張圖片,是所要的結果了。 :)
第二個問題是在正規表示式中使用變數的問題,簡單解釋為什麼加變數也會成為問題,先看下RegExp 物件和replace()方法的說明,Javascript的正規一般的書寫方式是:
以下為引用的內容: |
所有在「/」中間的內容都會被當成正規表示式,於是變數名稱也就被當成字串了。不加“/”?也行,不過不加“/”的話就不能指定匹配模式,也就只能匹配到第一個。
以下為引用的內容: 透過RegExp物件可以產生一個新的RegExp 對象,具有指定的模式和標誌。 |
於是:
以下為引用的內容:
|
這裡要注意的是使用「\」的方式的方式來轉義,因為
以下為引用的內容: 如果參數pattern 是正規表示式而不是字串,那麼RegExp() 建構子將用與指定的RegExp 相同的模式和標誌建立一個新的RegExp 物件。 |
這個過程中“\”會被轉換成“”,也就是上面的結果是:
以下為引用的內容:
|