2012-04-16 39 views
2

我在一塊的客戶端JavaScript遇到下面的正則表達式:這個正則表達式做了什麼以及函數用它做了什麼?

([^?=&]+)(=([^&]*))? 

當我運行它通過一個正則表達式測試器(Firefox插件),我得到的查詢字符串的值用一種顏色突出顯示的URL,問號和&符號根本不突出顯示,其餘顏色以其他顏色顯示。

我不確定它是匹配一種顏色還是其他兩種顏色,但是我使用替換選項,沒有任何東西被替換。

這只是我的問題的開始。在充分的一段代碼是這樣的:

var linkObj = new Object(); 
jQuery(this).attr('href').replace(
    new RegExp("([^?=&]+)(=([^&]*))?", "g"), 
    function(jQuery0, jQuery1, jQuery2, jQuery3){ 
     linkObj[ jQuery1 ] = jQuery3; 
    } 
); 

什麼是功能(jQuery0, jQuery1, jQuery2, jQuery3)的4個參數?

任何幫助,將不勝感激。

謝謝。

+1

查看['String.replace'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace)。 – 2012-04-16 13:53:00

回答

3

似乎分解URL的GET部分。

([^?=&]+)  # 1 or more characters, exclusive of ?, = or & 
(=    # = sign 
    ([^&]*)  # any character not a &, 0 or more times 
)?    # but optional 

function是一個回調,替換可以接受正則表達式調用。每個參數都是在正則表達式匹配中找到的不同值。該函數然後可以返回replace方法應該替代的結果)。因此,鑑於?foo=bar

  • jQuery0 - 全場比賽
  • jQuery1 - 首先捕獲(如foo
  • jQuery2 - 第二捕獲(=bar
  • jQuery3 - 三(嵌套)捕獲(bar
+0

將其分解的示例:http://jsfiddle.net/SQaFg/ – 2012-04-16 13:59:36

+0

輝煌 - 謝謝布拉德 – Graham 2012-04-16 14:03:41

相關問題