求一个关于用户名得字母数字正则表达式?

正则要求是:小写字母开头,+数字/字母/减号,最少3位,最长16位

我自己参考了一些百度的资料,就差一点点就ok了,现在有个小问题,调不出来。

/^[a-z][a-z1-9-]{3,16}$/

我输入 4个a,aaaa 是不匹配的。这个满足最小长度3。
我输入 17个a, 还是匹配了。输入19个a,才不匹配。
应该是17个a,就不匹配了。就false了。

这个是咋回事,按照那个表达式理解,好像没什么错误,实际是不行。

阅读 1.9k
2 个回答

因为{n, m}表示匹配前面的字符至少n次,最多m次。所以你的正则表达式匹配的是最少4位,最长17位。所以只需要将你的正则表达式改为/^[a-z][a-z1-9-]{2,15}$/即可

/^[a-z][a-zA-Z0-9\-]{2,15}$/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题