Git 提交消息的正则表达式

Regex for Git commit message

我正在尝试提出一个正则表达式来强制 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 后面没有空行,并且后面有多个空行,它也会匹配。

有什么强制执行的,还是我只能忍受它?

它也很丑陋,我相信有更简洁的方式来写出来。

谢谢。

您的正则表达式允许 \n 作为所需换行符后的可能字符之一,因此这就是它在有多个时匹配的原因。

这是经过清理的正则表达式:

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

备注:

  • 这需要在下一个换行符之前至少有一个 [-\w\s*.:',] 个字符。
  • 我将问题 ID 更改为有一个可能的逗号、space 和换行符,顺序为(每个最多一个)。你可以使用前瞻吗?如果是这样,我添加了 (?=[, \n]) 以确保问题 ID 后跟至少一个这些字符。
  • 另请注意,字符中的许多字符不需要转义 class。