我正在尝试在golang中编写一个正则表达式,以匹配以字母数字开头且之后可以带有下划线或连字符的字符串,但不能以连字符或下划线开头的字符串。

这是我能想到的,但这可以在任何地方匹配字母数字和连字符下划线

因此,诸如海鲜之类的东西将与海鲜或海鲜相匹配,但海鲜或seafood则不然。


您需要使用^表示字符串的开头,并使用$表示结尾,然后使用两个字符类:

^[A-Za-z0-9][A-Za-z0-9_-]*$

要在字符串末尾也禁止连字符和下划线,请尝试:

^[A-Za-z0-9]([A-Za-z0-9_-]*[A-Za-z0-9])?$


把事情简单化。 您可以在开始时使用负数前瞻。

演示


您需要拆分表达式,并分别匹配第一个字符,然后执行以下操作:

[A-Za-Z] [A-Za-z0-9 _-] *