2013-08-26 143 views
1

我在一些javascript代碼中發現了這個,並想知道它是什麼。這是什麼javascript正則表達式在做什麼?

var i = /^tags: ?((?:.*, ?)*.*)$/m.exec(e.details); 
+0

東西類似'tags:foo,bar,baz' – Blender

+1

[tadaaaa](http://rick.measham.id.au/paste/explain.pl?regex=%5E%28%3Fm%29tags%3A+% 3F%28%28%3F%3A。*%2C +%3F%29 *。*%29%24) – HamZa

回答

0
^ //start of the string 
tags: //4 characters: "tags" 
? //an optional space 
((?:.* // 0 or more of any character except a newline 
, ?) //a comma, then an optional space 
* // all the stuff on the previous 2 lines, repeated 0 or more times 
.*) //a capturing group of any character, repeated 0 or more times 
$ //end of the string 

基本上,標籤列表以逗號分隔。

此正則表達式恰好接受開頭的任何字符串「的標籤:」

它試圖冒號後捕捉到的東西。 (注意:我認爲它不符合作者的要求,因爲.*是貪婪的。)它將它全部捕獲到一個組中,而不是每個組的一個標籤。