我正在尝试使用正则表达式来强制执行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之后没有空行,并且之后有多个空行,它也会匹配。
无论如何要强制执行,还是我必须忍受它?
这也很丑陋,我确信有更简洁的方式来写出来。
感谢。
答案 0 :(得分:1)
你的正则表达式允许\n
作为所需换行符之后的可能字符之一,这就是为什么它在有多个时匹配的原因。
这是一个清理过的正则表达式:
/^([a-z]{2,4}-\d{2,5}(?=[, \n]),? ?\n?)+^\n([-\w\s*.:',]+\n)+/i
注意:
[-\w\s*.:',]
字符。(?=[, \n])
以确保问题ID后面至少跟有其中一个字符。