2015-04-22 2 views
3

Я пытаюсь создать регулярное выражение для принудительной передачи сообщений Git для соответствия определенному формату. Я бил головой о клавиатуру, изменяя полурабочую версию, которую я имею, но я просто не могу заставить ее работать так, как я хочу. Вот что у меня сейчас:Regex for Git commit message

/^([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 

В настоящее время он соответствует, но он также будет соответствовать, если нет пустой строки после идентификаторов выпуска , и после нескольких пустых строк.

В любом случае, чтобы обеспечить это, или мне просто нужно жить с ним?

Это также довольно уродливо, я уверен, что есть более краткий способ написать это.

Спасибо.

+1

Хотя я думаю, что было бы нормально ограничивать длину первой строки, я думаю, вы должны хотя бы разрешить краткое описание, помимо идентификаторов билетов. Многие инструменты отображают только первую строку, поэтому даже если вы применяете более подробное описание, во многих контекстах вам становится труднее увидеть, что такое фиксация, если вы просто ограничиваете ее идентификаторами билетов. –

ответ

1

Ваше регулярное выражение позволяет использовать \n как один из возможных символов после нужной строки новой строки, поэтому он совпадает с несколькими.

Вот очищен регулярное выражение:

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

Примечание:

  • Это требует, по крайней мере, один [-\w\s*.:',] символа перед следующей строкой.
  • Я изменил идентификаторы проблем, чтобы иметь одну возможную запятую, пробел и новую строку в этом порядке (до одного из них). Можете ли вы использовать lookaheads? Если это так, я добавил (?=[, \n]), чтобы убедиться, что идентификатор проблемы сопровождается хотя бы одним из этих символов.
  • Также обратите внимание, что многим символам не требуется экранировать класс символов.
+0

У Дэвида Онгаро действительно хороший момент, как я могу включить комментарий в первую строку после одного или нескольких идентификаторов проблемы? –

+0

@Steven: Какой формат возможных комментариев? Я не знаком с синтаксисом. И это не обязательно одна строка идентификаторов проблем, не так ли? В вашем регулярном выражении используются символы новой строки между идентификаторами проблем. –

Смежные вопросы