Je n'arrive pas à comprendre pourquoi cette vérification/validation alphanumérique ne fonctionne pas. J'ai coupé les autres options de commutateur (que tout fonctionne) parce que le seul contrôle qui ne fonctionne pas est le else if (!(pswRegex.test(inputValue)))
. Je ne suis pas un expert jQuery/Javascript, alors je manque quelque chose?Validation alphanumérique
La vérification de l'expression régulière doit autoriser un mot de passe seulement s'il est composé de lettres (majuscules ou non) et de chiffres.
$(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]: ce que je voulais obtenir l'affichage d'une erreur a été si la chaîne inputValue
contenait seulement lettres ou seulement numéros: l'utilisateur doit fournir un mot de passe alphanumérique. Merci à Aioros et Peeyush Kushwaha je compris que je ne peux pas y parvenir avec seulement une expression régulière (au moins avec ma connaissance réelle sur les expressions régulières), alors j'ai changé mon état else if
avec celui-ci:
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]: une autre solution propre et élégante est celle fournie par PanterA. Avec une seule condition if
vous pouvez afficher (uniquement) un déclaration d'erreur à l'utilisateur en disant que le mot de passe doit être au moins 8 carachters de long et composé par, au moins: une lettre majuscule, une lettre minuscule et un numéro .
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");
}
Semble fonctionner correctement dans un [violon] (https://jsfiddle.net/w7890gLj/). Qu'est-ce qui ne fonctionne pas pour vous exactement? Quelle est la contribution? – Aioros
@Aioros Peut-être que j'utilise la regex 'test()' dans le mauvais sens, mais supposons que 'var inputValue =" asdwerasd ";' -> cela devrait retourner 'false' de cette vérification' (! (PswRegex. test (inputValue))) 'et, dans votre fichier, imprimez dans la console.log 'regex', n'est-ce pas? Le problème est qu'il saute la vérification comme si elle était toujours 'true' affichant' ok' dans votre exemple et l'instruction 'else' dans la mienne – Brigo
@brigo Il ne devrait pas retourner false,'/^ [a-zA-Z0- 9] + $/'signifie" un caractère ou un chiffre " –