2015-04-22 51 views
3

我想要拿出一個正則表達式來強制執行Git提交消息來匹配某種格式。我一直在用鍵盤修改我的半工作版本,但我無法完全按照我的想法工作。這是我現在有:正則表達式的Git提交消息

/^([a-z]{2,4}-[\d]{2,5}[, \n]{1,2})+\n{1}^[\w\n\s\*\-\.\:\'\,]+/i 

這裏是我試圖執行文本:

AB-1432, ABC-435, ABCD-42 

Here is the multiline description, following a blank 
line after the Jira issue IDs 
- Maybe bullet points, with either dashes 
* Or asterisks 

目前,它匹配的是,但它也將匹配,如果有問題的ID後,沒有空行,以及之後是否有多個空行。

無論如何要強制執行,還是隻能忍受它?

這也很醜陋,我敢肯定有一個更簡潔的方式來寫出來。

謝謝。

+1

雖然我認爲限制第一行的長度是可以的,但我認爲你應該至少允許一個簡短的描述,除了票證ID之外。許多工具只顯示第一行,因此即使強制執行較長的描述,也會使您在多種情況下更難以一目瞭然地看到,如果僅將其限制爲票證ID,那麼提交是關於什麼。 –

回答

1

您的正則表達式允許\n作爲所需換行符之後的可能字符之一,所以這就是爲什麼它匹配時有多個。

這裏的清理正則表達式:

/^([a-z]{2,4}-\d{2,5}(?=[, \n]),? ?\n?)+^\n([-\w\s*.:',]+\n)+/i

注:

  • 這需要下一個新行前至少一個[-\w\s*.:',]字符。
  • 我更改了問題標識符,使其具有一個可能的逗號,空格和換行符(按每個順序排列)。你可以使用lookaheads嗎?如果是這樣,我添加了(?=[, \n])以確保問題標識後面至少有一個這樣的字符。
  • 另請注意,很多字符不需要在字符類中轉義。
+0

David Ongaro有一個非常好的觀點,我怎麼能在一個或多個問題ID之後的第一行中添加評論? –

+0

@Steven:可能的評論的格式是什麼?我不熟悉語法。它不一定只是一行問題ID,對吧?您的正則表達式允許在問題ID之間換行。 –