名称:只能包含小写字母,数字和短横线。必须以小写字母或者数字开头和结尾(32位),需对用户名里的大写字母已经下划线进行转换。
你的规则不完整吧,那个32位的意思是最长32位,还是必须32位?
如果最长32位,则为
/^[a-z0-9][a-z0-9\-]{0,30}[a-z0-9]$/
如果必须32位,则为
/^[a-z0-9][a-z0-9\-]{30}[a-z0-9]$/
function transName(str) {
// 先校验
if(!/^[\da-z][a-z\d\-_]{30}[\da-z]$/i.test(str)) {
return false;
}
// 再转换
return str.replace(/[A-Z_]/g, function(str) {
if(str === '_') {
return '-'
}
return str.toLowerCase();
})
}
// 01234567890123456789ababc-a-b--z
transName('01234567890123456789aBabc_a_b-_Z');
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决