用于验证长度的正则表达式

时间:2020-03-06 21:45:25

标签: regex string go

我正在编写一个函数来在Go中执行基于正则表达式的简单模式匹配,并且需要另外验证我想针对该模式匹配的字符串的长度。 这是我的正则表达式的要求:

  • 第一个字符必须是字母或数字
  • 最后一个字符必须是字母或数字
  • 首尾之间的任何字符都必须是字母,数字或“。”,“ _”和“-”中的任何一个
  • 最小长度是一个字符
  • 最大长度为255个字符
func validateUserEnvironmentName(name string) bool {
    var validEnvName = regexp.MustCompile(`^[a-zA-Z0-9]+[a-zA-Z0-9_.\-]*[a-zA-Z0-9]{1,255}$`)
    return validEnvName.MatchString(name)
}

除了输入超过255个字符的情况外,正则表达式还可以验证所有用例。 Go中的regex是否提供了一种机制来验证整个模式的长度,还是应该修改regex以适应此特定用例?

这是Go Playground链接,可用于测试-https://play.golang.org/p/GmGYh8vtx34

1 个答案:

答案 0 :(得分:1)

请勿为此使用正则表达式。只需正常检查字符串的长度即可。正则表达式速度慢且计算量大,因此仅在真正需要它们时才使用。