2014-10-04 43 views
-4

我試圖理解這個正則表達式的含義是:需要幫助理解複雜的JavaScript REG EXP

/^\s*[^#].*?\s*:\s*([a-f0-9.:]+?)\s*-\s*([a-f0-9.:]+?)\s*$/

我想了解的NodeJS的模塊,因爲我不是正則表達式的專家,它有點難做。

如果有人能翻譯這個表達式,這將是非常有幫助的。


很好的答案。

什麼,我想了解的是以下功能:

var parseBlocklist = function(filename) { 

var blocklistData = fs.readFileSync(filename, { encoding: 'utf8' }); 
var blocklist = []; 
blocklistData.split('\n').forEach(function(line) { 
var match = null; 
if ((match = /^\s*[^#].*?\s*:\s*([a-f0-9.:]+?)\s*-\s*([a-f0-9.:]+?)\s*$/.exec(line))) { 
    blocklist.push({ 
    start: match[1], 
    end: match[2] 
}); 
} 
}); 
return blocklist; 
}; 

對於我意識到那一刻:

該功能需要一個文件作爲參數,並讀取全部內容

之後,構成文件的每行內容都使用正則表達式進行操作。

似乎這個「東西」的結果被推入數組中。

如果可以,請更好地解釋此功能的用途。

+2

[Debuggex將讓你看到你的正則表達式的可視化表示(https://www.debuggex.com/r/9r5nMnSj35tNF7IR) – h2ooooooo 2014-10-04 11:23:59

回答

0

給定的正則表達式是多個正則表達式的組合,記住,你可以打破這個複雜的正則表達式爲多個較小的一個,每個小的人可以很容易地轉換

請參閱此Wiki網頁尋找意義每個小的正則表達式部分 http://en.wikipedia.org/wiki/Regular_expression

你的正則表達式可分爲

/^       Start of line 
\s*      zero or more space non white character 
[^#].?      not equal to hash atleast one 
\s       non white character 
:       colon 
\s*      zero or more space non white character 
([a-f0-9.:]+?)    hexa digit (one or more) 
\s*      zero or more space non white character  
-       dash 
\s*      zero or more space non white character 
([a-f0-9.:]+?)    hexa digit (one or more) 
\s*      zero or more space non white character 
$/       end of line 
0

/^起跑線

的10

\ S *可選空白

[^#]任何東西,除了一個#

。*?任何事物的負載

\ S *更多的空白

:冒號

\ S *更多的空白

([a-f0-9.:]+?)一些十六進制,但允許。和:由於某種原因

\ S *更多的空白

  • 減去

\ S *更多的空白

([a-f0-9.:]+?)更六角

\ S *更多的空白

$ /線

結束