Git 流程分支验证正则表达式必须以字母结尾
Git flow branch validation regex must end with letter
我正在编写一个正则表达式来验证分支名称。基本上,分支可以以功能、修补程序或版本开头,后跟斜杠。之后必须是一些字母或数字(至少一个),然后是分隔符,可以是斜线、点或线,后跟更多字母或数字等。但是,分支名称不能以分隔符结尾。
这是我想出来的。
^(features?|releases?|hotfix(es)?)\/([a-z\d]+[-/_.]?)+[a-z\d]$
但是,分支名称 release/0
不匹配,而应该匹配。但是,当我删除最后一个字符集时,分支 feature/name_
将匹配。
会
^(feature(s)?|release(s)?|hotfix(es)?)(\/[a-z\d]+)([-/_.][a-z\d]+)+$
是你需要的吗?
在您的示例中,正斜杠后是 1 个字符,并且由于 2 个字符 classes [a-z\d]+
,您的模式需要至少 2 个字符。
一个选项是首先匹配字符 class 并重复 0+ 次分隔符,然后是字符 class.
^(features?|releases?|hotfix(es)?)\/[a-z\d]+([-/_.][a-z\d]+)*$
^
字符串开头
(features?|releases?|hotfix(es)?)
匹配任意选项
\/[a-z\d]+
匹配正斜杠和字符中所列内容的 1+ 倍 class
([-/_.][a-z\d]+)*
重复 0+ 次分隔符和 1+ 次字符 class
$
字符串结束
如果您不需要捕获组 ()
您可以将它们改为非捕获 (?:)
现在,第一个 /
之后的内容是:
([a-z\d]+[-/_.]?)+[a-z\d]$
这意味着 "at least one alphanumeric followed by a separator" 或 "at least one alphanumeric (no separator)" 然后是字母数字。换句话说,总共至少有两个字符。
如果你把中间的 +
改成 *
,我想你会得到你想要的:
([a-z\d]+[-/_.]?)*[a-z\d]$
我正在编写一个正则表达式来验证分支名称。基本上,分支可以以功能、修补程序或版本开头,后跟斜杠。之后必须是一些字母或数字(至少一个),然后是分隔符,可以是斜线、点或线,后跟更多字母或数字等。但是,分支名称不能以分隔符结尾。
这是我想出来的。
^(features?|releases?|hotfix(es)?)\/([a-z\d]+[-/_.]?)+[a-z\d]$
但是,分支名称 release/0
不匹配,而应该匹配。但是,当我删除最后一个字符集时,分支 feature/name_
将匹配。
会
^(feature(s)?|release(s)?|hotfix(es)?)(\/[a-z\d]+)([-/_.][a-z\d]+)+$
是你需要的吗?
在您的示例中,正斜杠后是 1 个字符,并且由于 2 个字符 classes [a-z\d]+
,您的模式需要至少 2 个字符。
一个选项是首先匹配字符 class 并重复 0+ 次分隔符,然后是字符 class.
^(features?|releases?|hotfix(es)?)\/[a-z\d]+([-/_.][a-z\d]+)*$
^
字符串开头(features?|releases?|hotfix(es)?)
匹配任意选项\/[a-z\d]+
匹配正斜杠和字符中所列内容的 1+ 倍 class([-/_.][a-z\d]+)*
重复 0+ 次分隔符和 1+ 次字符 class$
字符串结束
如果您不需要捕获组 ()
您可以将它们改为非捕获 (?:)
现在,第一个 /
之后的内容是:
([a-z\d]+[-/_.]?)+[a-z\d]$
这意味着 "at least one alphanumeric followed by a separator" 或 "at least one alphanumeric (no separator)" 然后是字母数字。换句话说,总共至少有两个字符。
如果你把中间的 +
改成 *
,我想你会得到你想要的:
([a-z\d]+[-/_.]?)*[a-z\d]$