2012-04-27 81 views
0

我找了一些代碼,發現了以下的正則表達式:這個正則表達式究竟做了什麼?

var querystring = querystring.replace(/[^&]+=\.?(?:&|$)/g, '') 

這是取查詢字符串和更換,以與符號或問號以空格開頭的所有值?有沒有更多的事情發生在我看不到的地方?

你是合乎邏輯的解釋是非常感謝和幫助獲得更多的理解正則表達式。謝謝!

+0

這將刪除所有匹配/[^&]+=\.?(?:&|$)/g(第二個參數是空字符串而不是空格)的字符串。 – GillesC 2012-04-27 10:59:26

+0

爲什麼querystring被搜索/替換並定義在同一行上? – 2012-04-27 11:03:36

+0

它在表單處理腳本上,查詢字符串在我上面發佈的行之前被序列化:'var querystring = $(this).serialize();'我應該這麼說。 – 2012-04-27 11:06:17

回答

3

這似乎從查詢字符串,其值是除去那些參數:

  1. 等於.

例如:

"remove1=&remove2=.&keep1=..&keep2=a&keep3=b".replace(/[^&]+=\.?(?:&|$)/g, '') 
// returns "keep1=..&keep2=a&keep3=b" 
+0

我看到,它正在清理字符串中的空值。優秀的答覆,非常感謝!乾杯! – 2012-04-27 12:02:32

2

[^&]+一個或多個非 「&」 字符

=文字 「=」 字符

\.?一個可選的 「」

(?:&|$)一個「&」字符或字符串的末尾

將是例如匹配

Foobar =。 &
A =