如何为用户名约束创建 jQuery 验证器方法?

How to create jQuery Validator method for username constraints?

所以我目前有这种方法来强制使用强密码:

$.validator.addMethod('goodPassword', function(value, element){
    return this.optional(element) ||
        value.length >= 6 &&
        /\d/.test(value) &&
        /[a-z]/i.test(value);
}, 'Your password sucks boy, you need at least 6 char and both number and char in that motherf.')

我想为我的用户名创建类似的东西,以将它们限制为字母、数字、破折号、下划线和句点。我似乎不知道该怎么做。我阅读了一些有关正则表达式的内容,但仍然无法弄清楚我应该如何处理我的代码。

这是我目前拥有的:

$.validator.addMethod('goodUsername', function(value, element)){
    return this.optional(element) ||
        value.length >= 4 // && or ||, not really sure what to put here
        //something to check if entered data contains anything other than letters, numbers, dashes, underscores and periods
}, 'What kind of fkin username is that? You can only use letters, numbers, dashes, underscores and periods.')

有人能给我指路吗?

您可以使用此功能并设置您的自定义非法包机:

function validateUsername(fld) {
    var error = "";
    var illegalChars = /\W/; // allow letters, numbers, and underscores

    if (fld.value == "") {
        fld.style.background = 'Yellow';
        error = "You didn't enter a username.\n";
        alert(error);
        return false;

    } else if ((fld.value.length < 5) || (fld.value.length > 15)) {
        fld.style.background = 'Yellow';
        error = "The username is the wrong length.\n";
        alert(error);
        return false;

    } else if (illegalChars.test(fld.value)) {
        fld.style.background = 'Yellow';
        error = "The username contains illegal characters.\n";
        alert(error);
        return false;

    } else {
        fld.style.background = 'White';
    }
    return true;
}

这是使用 Javascript 正则表达式功能的代码

$.validator.addMethod('goodUsername', function(value, element)){
    return this.optional(element) || value.match(/^[\w.-]{4,}$/m)
}, 'What kind of fkin username is that? You can only use letters, numbers, dashes, underscores and periods.')

正如@rock321987 所指出的那样,它仍然允许 ...-... 和其他奇怪的用户名。

我让这个 Regex 开始工作,并基于 jQuery 验证器文档。

/^[a-z|A-Z]|\d|_|-|\./m

这是它在代码中的样子。 jQuery validator addMethod

$.validator.addMethod('goodUsername', function(value, element)){
    return this.optional(element) || /^[a-z|A-Z]|\d|_|-|\./.test(value);
}, 'What kind of fkin username is that? You can only use letters, numbers, dashes, underscores and periods.');

我用这个网站来写我的正则表达式regex 101

我运行它反对这些字符串。

var str2 = 'uerhyeiufhsniufhsdJSHNAJDHJS09i304584305i4309SKA()*^&854&_-.dsf%#$fdfIIJ76..';
var str2 = 'dskfjdkaAHDNsfj34-2sds3432_-.*()$%#545@';