正则表达式为git的存储库

时间:2014-10-29 11:54:07

标签: c# regex

我想使用正则表达式来验证git存储库url。我在stackoverflow上找到了一些答案,但没有一个通过我的测试。

调试在这里:http://regexr.com/39qia

如何让它通过最后四种情况?

git@git.host.hy:group-name/project-name.git
git@git.ho-st.hy:group-name/project-name.git
http://host.xy/agroup-name/project-name.git
http://ho-st.xy/agroup-name/project-name.git

3 个答案:

答案 0 :(得分:1)

我无法确定,因为我不熟悉git链接语法,但下面的正则表达式还会匹配下面的4个值:

((git|ssh|http(s)?)|(git@[\w.-]+))(:(//)?)([\w.@\:/~-]+)(\.git)(/)?
                             ^                     ^^    ^

我已经指出了改变的部分;即:

  1. -之后向{0}}部分添加了@,因为ho-st没有通过。
  2. -移至字符类的末尾,否则/-~表示与 lot 匹配的字符范围/~人物。
  3. 逃到最后一个点(感谢@MatiCicero)
  4. 有很多事情可以从上面简化,但由于我不知道你的确切目标,我离开正则表达式尽可能接近你所拥有的那个。

答案 1 :(得分:0)

你可以尝试这个:

(?'protocol'git@|https?:\/\/)(?'domain'[a-zA-Z0-9\.\-_]+)(\/|:)(?'group'[a-zA-Z0-9\-]+)\/(?'project'[a-zA-Z0-9\-]+)\.git

然后,您可以从匹配的组中提取所需的信息。

您可以在Regex101

上测试此正则表达式

答案 2 :(得分:0)

好的,以下表达式匹配您当前的所有测试文本,并且与以前提供的任何误报都不匹配:

((((git|user)@[\w.-]+)|(git|ssh|http(s)?|file))(:(\/){0,3}))?([\w.@\:/~\-]+)(\.git)(\/)?

另见regex

警告:请注意,目前的输入与'〜'相匹配和' - '出现在他们不应该的地方。