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

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

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

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

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

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

温温酱
浏览 1252回答 3
3回答

慕容708150

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

开心每一天1111

/^[a-z][a-zA-Z0-9\-]{2,15}$/
打开App,查看更多内容
随时随地看视频慕课网APP