2010-01-07 87 views
1

是什麼什麼/.*=/ '' 意味着VAR ID = this.href.replace(/.*=/, '');?

/.*=/,'' 

var id=this.href.replace(/.*=/,''); 

是什麼意思?

的完整代碼

function delete_subscriber(){ 
var id=this.href.replace(/.*=/,''); 
this.id='delete_link_'+id; 
if(confirm('Are you sure you want to delete this subscriber?')) 
$.getJSON('delete.php?ajax=true&id='+id, remove_row); 
return false; 
} 

我認爲它是正則表達式,但我對此知之甚少。

請幫助。

回答

4

這是一個regular expression

這裏的具體語法如下(#年代後評論):

/ # Begin an expression 
.* # Match all characters 
= # Until an equals sign is met 
/ # End the expression 

它的其餘部分是替換任何由這個正則表達式匹配和刪除的功能。

+2

不僅僅是直到等號(=)..但直到該行的最後一個等號(=).. – 2010-01-07 21:04:25

+1

作爲已經在mopoke的答覆中提到:在默認情況下'.'(DOT)不匹配換行符。由於這個答案似乎是公認的答案,我也會在這裏提到它。 – 2010-01-07 21:13:28

11

它取代了截至及包括最後一個等號什麼也沒有簽署任何字符(除換行符)。因此,考慮這樣的文字:

"I am some text before=and I am some text after" 

你會得到:

"and I am some text after" 

並給予這樣的文字:

"I am some text before=and I am in between=and I am after" 

你會得到:

"and I am after" 
+0

除了換行符的任何字符。 – 2010-01-07 20:49:33

+0

+1,直至幷包括「最後」等號。 – sberry 2010-01-07 20:49:36

+0

@第K條 - 良好的電話休息。編輯。 – mopoke 2010-01-07 21:08:19

2

這意味着,採取一切直到幷包括一個等號,用什麼替代它,所以採取類似

http://yourserver.com/blah/blah/blah/id=20 and change it to 20. 
2

這裏有一個更詳細的解釋:

/.*=/,'' 
  • //表示正則表達式
  • .表示除了換行符
  • 0123的任何字符
  • *表示0或者任意數量的(在這種情況下,任何字符)的
  • =字面意思是等於符號
  • ''是與它被替換的字符串(即沒有)
1

的/。 = /是_regular表情的相匹配:(「‘由下式表示)首先,任何字符的序列,第二個和最後,從字面上匹配如由字符本身指定的字符等於(’=」)。 '/'字符分隔正則表達式。

replace()調用傳遞一個空字符串替換。這種替換呼叫的目的是刪除匹配的文本。所以這個調用刪除等號左邊的文本和等號本身。

在整體功能的上下文中,爲當前頁面的href中的等號後的所有文本分配了id的值。所以,這段代碼正在解開一個URL的包裝,以獲取URL中出現等號的參數。

0

斜槓開始/結束的正則表達式。 期間匹配任何字符。 星號表示匹配前一個表達式(任何字符)的任何數字(零個或多個)。 等號字面上等號。 所以「。* =」表示任何東西(包括什麼都沒有),後面是等號。第二個參數shits函數''是一個空字符串,所以匹配的字符串將被刪除(被替換爲空)。

總之,這個特定的代碼段將刪除之前任何東西,包括從字符串(this.href,當前URL)等號。所以它會提取例如來自foo.php?id = 42的「42」。