正则表达式以字母数字和连字符开头,后面用字符串下划线

时间:2014-10-14 19:17:34

标签: regex go

我试图在golang中编写一个regexp,它匹配以字母数字开头的字符串,后面可以有下划线或连字符,但不能以连字符或下划线开头。

以下是我可以提出的内容,但这与任何地方的字母数字和连字符下划线相匹配

[A-Za-z0-9_-]

所以像海鲜这样的东西可以匹配,或海鲜或海洋食物,但不是 - 海鲜或_seafood。

3 个答案:

答案 0 :(得分:4)

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

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

要禁用字符串末尾的连字符和下划线,请尝试:

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

答案 1 :(得分:2)

保持简单。你可以在开始时使用负向前瞻。

^(?![_-])[\w-]+$

DEMO

答案 2 :(得分:0)

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

[A-ZA-Z] [A-ZA-Z0-9 _-] *