我正在尝试在Go中编写一个正则表达式,以验证字符串仅包含字母数字,句点和下划线。但是,我遇到了一个从未见过的错误,并且在Googling上未成功。
这是正则表达式:
pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
这是错误:const initializer regexp.MustCompile("^[A-Za-z0-9_\\.]+") is not a constant
“非常数”是什么意思,该如何解决? 最佳答案
当您尝试分配给常量类型不能为常量的常量时(例如Regexp
),就会发生这种情况。只有诸如int
,string
等的基本类型可以是常量。有关更多详细信息,请参见here。
例子:
pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
// which translates to:
const pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
您必须将其声明为var
才能起作用:var pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
另外,我通常会注意说变量被视为常量:var /* const */ pattern = regexp.MustCompile(`^[A-Za-z0-9_\.]+`)
关于regex - 正则表达式 “is not a constant”编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37976076/