我无法理解为什么这个字母数字检查/验证不起作用。我已经切断了其他开关选项(这一切都有效),因为唯一不起作用的检查是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
答案 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,}$/
希望它有所帮助。