求一个正则,40个字符以内,不能以“-”开头,以“.”、“.git”或者“.atom”结尾,只能由字母、数字、“_”、-”组成

1-40个字符,登录名只能由字母、数字、“-”、“_”、“.”组成,且不能以“-”开头,不能以“.”、“.git”或者“.atom”结尾

阅读 3.9k
3 个回答

简单的就是:/^[^-][\w-\.]{0,39}(?<!\.|\.git|\.atom)$/ /^(?!\-)[\w\-\.]{1,40}(?<!\.|\.git|\.atom)$/,但是反向否定预查在js中兼容性bus很好

所以就有了这个复杂点的:/^((?![\w\-\.]{0,39}\.$|[\w\-\.]{0,36}\.git$|[\w\-\.]{0,35}\.atom$)[^\-][\w\-\.]{0,39})$/

/^(?!-)[\.-\w]{1,40}(?<!\.|\.git|\.atom)$/

楼上的答案有个问题,比如下面:

/^[^-][\w-\.]{0,39}(?<!\.|\.git|\.atom)$/.test('$')
/^(?!.*\.(?:git|atom)?$)[\w.][-\w.]{0,39}$/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题