正则表达式中的最小长度

pka*_*mol 5 regex go

我很清楚,如果需要最少 4 个字符,则应使用此量词来指示正则表达式的最小长度{4,}

我正在尝试编译一个正则表达式,go以允许

  • 总共最少4个字符,包括连字符

  • 仅字母、数字和连字符

  • 最后一个字符不应连字符

所以建议我使用这个:

^[a-zA-Z0-9-]*[a-zA-Z0-9]$
Run Code Online (Sandbox Code Playgroud)

这似乎可以完成工作。

现在,考虑到我想强制至少 4 个字符,我对其进行了如下修改:

^[a-zA-Z0-9-]*[a-zA-Z0-9]{4,}$
Run Code Online (Sandbox Code Playgroud)

然而,考虑到下面的模式,这似乎并不能完成工作

eee0-lll
Run Code Online (Sandbox Code Playgroud)

匹配 (根据我的要求它应该)

我面临的限制之一是go不允许进行环视断言。

Wik*_*żew 7

您可以使用

^[a-zA-Z0-9-]{4,}\b$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • ^- 字符串的开头
  • [a-zA-Z0-9-]{4,}- 四个或更多 ASCII 字母、数字或连字符 - \b- 需要单词字符(字母、数字或_)立即出现在当前位置左侧的单词边界,因为下一个模式需要...
  • $- 字符串末尾。