字母数字验证

时间:2016-12-16 13:14:23

标签: javascript jquery regex

我无法理解为什么这个字母数字检查/验证不起作用。我已经切断了其他开关选项(这一切都有效),因为唯一不起作用的检查是else if (!(pswRegex.test(inputValue)))。我不是jQuery / Javascript专家,所以我错过了什么?

正则表达式检查应该允许密码 ,如果它由字母(大写或非大写)和数字组成。

$(document).ready(function(){

    $('.req').on('input', function() {
        var inputID = $(this).attr('id');
        var inputValue = $(this).val();
        var valueLenght = $(this).val().length;

        switch (inputID) {
            case "psw":
            var pswRegex = /^[a-zA-Z0-9]+$/;
            if (valueLenght < 8) {
                $('#subButton').prop('disabled', true);
                $('#err' + inputID).show().text("Password must be 8 carachters minimum");
            }
            else if (!(pswRegex.test(inputValue))) { 
                $('#subButton').prop('disabled', true);
                $('#err' + inputID).show().text("Password must be alphanumeric");
            }
            else {
                $('#subButton').prop('disabled', false);
                $('#err' + inputID).hide();
            }
        break;
        }
  });

});

[编辑] :如果inputValue字符串包含字母或,我想要实现的是显示错误数字:用户必须提供字母数字密码。感谢 Aioros Peeyush Kushwaha 我明白我只能用正则表达式来实现这一点(至少我对正则表达式的实际知识),所以我改变了我的{ {1}}这个条件:

else if

[编辑2] :另一个干净而优雅的解决方案是 PanterA 提供的解决方案。只有一个else if (/^[0-9]+$/.test(inputValue) || /^[a-zA-Z]+$/.test(inputValue)) { $('#subButton').prop('disabled', true); $('#err' + inputID).show().text("Password must be composed by both letters and numbers"); } 条件,您可以向用户显示(仅) 一个 错误声明,说明密码必须至少为8个carachters并且由以下内容组成:至少:一个大写字母,一个小写字母和一个数字。

if

1 个答案:

答案 0 :(得分:0)

这个正则表达式可以帮助你:

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).*$/

lookahead?=)匹配括号内的任何内容,而不是结果的一部分。在这里,我们希望正则表达式找到任何事物的最小出现(.*?),然后是我们想要强制执行的字符(例如大写字母)。

所以这个正则表达式会检查:

  • 至少一个大写字母:(?=.*?[A-Z])
  • 至少一封小写字母:(?=.*?[a-z])
  • 至少一位数:(?=.*?[0-9])

检查出来:https://jsfiddle.net/q7do1woL/

此外,如果要使用regex验证字符串的长度,可以添加具有最小值的量词:

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$/

希望它有所帮助。