regex 向Go版本控制验证器脚本添加预发布版本格式

7z5jn7bk  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(171)

我正在尝试修改一个已经存在的代码,用于一个用Go编写的简单版本控制检查脚本。该脚本用于检查版本标记更新是否符合预期,并且只允许通过特定格式。到目前为止,它只接受以下格式的版本:
“vX.X.X”
Go代码如下:
模式= ^v[0-9]+.[0-9]+.[0-9]+$
这样,预发布标签就被排除在外了,这对我们来说是个问题。代码应允许:
v1.2.3 v1.2.4
和/或
v1.2.3-测试v1.2.4-beta
版本。我如何添加此?这是正确的模式吗?
模式= ^v[0-9]+.[0-9]+.[0-9]+$ + ^v[0-9]+.[0-9]+.[0-9]+-[$]
如果可能的话,请告诉我,我真的没有围棋经验。

t8e9dugd

t8e9dugd1#

试试这个
模式= ^v[0-9]+.[0-9]+.[0-9]+(-[a-zA-Z]+)?$
下面是一个示例代码片段,它将打印标签列表中不匹配的标签。

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `^v[0-9]+.[0-9]+.[0-9]+(-[a-zA-Z]+)?$`

    tests := []string{
        "v1.2", // this will not match with the pattern

        "v1.2.3",
        "v1.2.3-test",
        "v1.2.3-test-beta", // this will not match with the pattern

        "v1.2.4-beta",
        "v1.2.4-beta12", // this will not match with the pattern
    }

    reg := regexp.MustCompile(pattern)

    for _, test := range tests {
        if !(reg.MatchString(test)) {
            fmt.Printf("[%v] - not matching \n", test)
        }
    }
}

请参阅How to write regular expressions?以了解有关正则表达式的更多信息。

相关问题