^(?=.*[-_.]?)[a-z][a-z0-9-_.]{1,13}[a-z0-9]$
>必须以一封信开头.
>必须以字母或数字结尾.
>长度必须介于3到15个字符之间.
>可能只存在字母,数字和[-_.].
> [-_.]是可选的,但使用时只能在整个字符串中出现ONCE.
我在最后一个要点上遇到了麻烦.
尝试使用(?=.* [-_.]?)进行预测并确保每当使用[-_.]时,它应该只出现一次.但它似乎不起作用,因为当我使用像__- bc34或a.b_c-d这样的字符串测试时,它匹配,但它应该只允许像a_bc34这样的东西.
高级正则表达式不是我最强的,所以我很感激任何帮助!
解决方法
我做:
^(?=.{3,15}$)[a-z][a-z0-9]*[-_.]?[a-z0-9]+$
说明:
^ : start of string (?=.{3,15}$) : lookahead,assumes there is from 3 to 15 character [a-z] : a letter [a-z0-9]* : 0 or more alphanum [-_.]? : optional -,_ or . [a-z0-9]+ : 1 or more alphanum $ : end of string