我将通过JavaScript和PHP检查用户名。
用户名可以包含英文字母,数字和一个连字符( - )。
无法使用连字符( - )启动用户名。
用户名无法用连字符( - )完成。
无法使用数字启动用户名。
用户名不能包含多个连字符( - )。
用户名不能小于6且大于20。
abc123 is correct.
abc-123 is correct.
ab12 is wrong: username is shorter than 6 character.
-abc123 is wrong: username is started with hyphen.
abc123- is wrong: username is finished with hyphen.
ab-12-c3 is wrong: username contains more than one hyphen.
123abc is wrong: username is started with numbers.
答案 0 :(得分:4)
您可以使用
^(?!\d)(?!.*-.*-)(?!.*-$)(?!-)[a-zA-Z0-9-]{6,20}$
请参阅demo
说明:
^
- 开头匹配(?!\d)
- 如果字符串以数字(?!.*-.*-)
- 如果字符串在字符串(?!.*-$)
- 如果字符串以连字符(?!-)
- 如果字符串以连字符[a-zA-Z0-9-]{6,20}
- 匹配指定范围内的6到20个字符$
- 断言字符串的结尾。答案 1 :(得分:2)
您需要使用基于前瞻性的正则表达式:
{
"name" : "James"
"number" : 1,
"now" : 1438933526108
}
使用JavaScript的逻辑方法是:
/^(?=.{6,20}$)[a-z][a-z0-9]+(?:-[a-z0-9]+)?$/i