Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 强制消息长度的正则表达式_Regex_Bash - Fatal编程技术网

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问题相链接,因此
      +
      更合适)
  • -
    破折号按字面意思匹配
  • {8,}
    至少匹配8个字符
  • $
    是行的结尾

尝试
如果[[$MESSAGE=~^((美国公司)[0-9]+[A-Z]+-[0-9])-.{8,}$].
。不清楚为什么在模式中使用
[A-Z]+-[0-9]
,所以我将其保留在这里
{8,}
将匹配任何8个或更多字符。这些是bash正则表达式,而不是PCRE:它们不理解
\w
——我认为对于“8个或更多字符的短消息,
{8,}
就足够了。非常感谢您的回答和周到的解释-非常感谢!既然你是一个新成员,我建议你考虑把答案标记为。它表示您的问题已解决,并帮助其他用户。此操作是可选的,由您决定。感谢您的建议,我不知道该函数-将执行。