Regex 强制消息长度的正则表达式
编辑:下面的答案适用于我的用例。谢谢 我不熟悉编写正则表达式,编写本文是为了强制执行提交消息格式Regex 强制消息长度的正则表达式,regex,bash,Regex,Bash,编辑:下面的答案适用于我的用例。谢谢 我不熟悉编写正则表达式,编写本文是为了强制执行提交消息格式 ^((美国公司)[0-9]+[A-Z]+-[0-9]) 我在Bash脚本中使用它,摘录如下 if [[ $MESSAGE =~ ^((US|DE|INC)[0-9]+|[A-Z]+-[0-9]) ]]; then echo -e "\033[32mCommit message is valid\033[0m" echo -e "$MESSAGE"` else ERROR_ME
^((美国公司)[0-9]+[A-Z]+-[0-9])
我在Bash脚本中使用它,摘录如下
if [[ $MESSAGE =~ ^((US|DE|INC)[0-9]+|[A-Z]+-[0-9]) ]]; then
echo -e "\033[32mCommit message is valid\033[0m"
echo -e "$MESSAGE"`
else
ERROR_MESSAGE='Invalid description'
fi
这是为了加强拉力赛故事/事件/缺陷前缀
我想增强这一点,这样不仅可以强制消息以“USxxx”开头,还需要在-
因此,只有当消息字符串看起来像以下内容之一时,正则表达式才会匹配:
“USxxx-包含8个或更多字符的短消息,不需要上限”
INCxxx-包含8个或更多字符的短消息,不需要上限
DExxx-包含8个或更多字符的短消息,不需要上限
我已经尝试过一些正则表达式教程,但我仍在努力找到合适的正则表达式,如果能从了解他们正在做什么的人那里看到一些解决方案草案,我会觉得非常有帮助 我想这就是你想要的:
^(US|DE|INC)[0-9]+-.{8,}$
在Regex101上查看
是行的开始^
允许字符串的起始变体(US | DE | INC)
至少一个数字。如果要强制执行三个,请使用[0-9]+
[0-9]{3}
- (我发现您希望将提交与数字长度可变的Jira问题相链接,因此
更合适)+
- (我发现您希望将提交与数字长度可变的Jira问题相链接,因此
破折号按字面意思匹配-
至少匹配8个字符{8,}
是行的结尾$
如果[[$MESSAGE=~^((美国公司)[0-9]+[A-Z]+-[0-9])-.{8,}$].
。不清楚为什么在模式中使用[A-Z]+-[0-9]
,所以我将其保留在这里{8,}
将匹配任何8个或更多字符。这些是bash正则表达式,而不是PCRE:它们不理解\w
——我认为对于“8个或更多字符的短消息,{8,}
就足够了。非常感谢您的回答和周到的解释-非常感谢!既然你是一个新成员,我建议你考虑把答案标记为。它表示您的问题已解决,并帮助其他用户。此操作是可选的,由您决定。感谢您的建议,我不知道该函数-将执行。