我正在尝试在 golang 中编写一个正则表达式,它匹配以字母数字开头的字符串,并且后面可以有下划线或连字符,但不以连字符或下划线开头。
这是我能想到的,但这与任何地方的字母数字和连字符下划线匹配
[A-Za-z0-9_-]
Run Code Online (Sandbox Code Playgroud)
所以像seafood这样的东西会匹配orseafood或sea_food,但不能匹配-seafood或_seafood。
您需要使用 a^来指示字符串的开头和$结尾,然后使用两个字符类:
^[A-Za-z0-9][A-Za-z0-9_-]*$
要禁止在字符串末尾使用连字符和下划线,请尝试:
^[A-Za-z0-9]([A-Za-z0-9_-]*[A-Za-z0-9])?$