Не могу понять, почему эта буквенно-цифровая проверка/проверка не работает. Я отключил другие параметры переключателя (что все работает), потому что единственная проверка, которая не работает, - 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;
}
});
});
[EDIT]: то, что я хотел добиться показывало ошибку, если inputValue
строка содержала только буквы или только номера: пользователь должен предоставить буквенно-цифровой пароль. Благодаря Aioros и Peeyush Kushwaha я понял, что я не могу этого добиться только регулярного выражения (по крайней мере, с моим фактическим знанием о регулярных выражениях), поэтому я изменил свои else if
состояния с этим:
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");
}
[EDIT 2]: другое чистое и изящное решение, предоставленное PanterA. Только с одним if
вы можете отобразить (только) заявление об ошибке для пользователя, в котором говорится, что пароль должен состоять как минимум из 8 карачаеров длиной и составлен по крайней мере: одна заглавная буква, одна строчная буква и одно число ,
var pswRegex = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$/;
if (!pswRegex.test(inputValue)) {
$('#subButton').prop('disabled', true);
$('#err' + inputID).show().text("Password must be at least 8 carachters long and composed by, at least, one capital letter, one lower case letter and one number");
}
Кажется, что он отлично работает в [скрипке] (https://jsfiddle.net/w7890gLj/). Что не работает для вас именно так? Какой вклад? – Aioros
@Aioros Возможно, я использую регулярное выражение 'test()' неверным образом, но давайте предположим, что 'var inputValue =" asdwerasd ";' -> это должно возвращать 'false' из этой проверки' (! (PswRegex. test (inputValue))) 'и в вашем файле напечатать в консоли.log 'regex', правильно? Проблема в том, что он пропускает проверку, как будто это всегда 'истина', отображающая' ok' в вашем примере и оператор 'else' в моем – Brigo
@brigo. Он не должен возвращать false,'/^ [a-zA-Z0- 9] + $/'означает« любой символ или цифра » –