输入的名称正则要求怎么写?

发布于 2022-09-12 13:31:20 字数 69 浏览 24 评论 0

名称:只能包含小写字母,数字和短横线。必须以小写字母或者数字开头和结尾(32位),需对用户名里的大写字母已经下划线进行转换。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

空城仅有旧梦在 2022-09-19 13:31:20
let str = '1A11_C1',
    reg = /^[a-z0-9][a-z0-9\-]*[a-z0-9]$/g
str = str.replace('_','-').toLowerCase()
reg.test(str)
孤星 2022-09-19 13:31:20

你的规则不完整吧,那个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]$/
沦落红尘 2022-09-19 13:31:20
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');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文