Renvoie true ou false à partir de la fonction javascript
Je suis en train de faire une regex pour vérifier sur une chaîne à l'intérieur d'une fonction:
function ValidateZipCodeString(listOfZipCodes) {
var regex = /^([, ]*\d{5})+[, ]*$/,
matches = regex.exec(listOfZipCodes);
if (regex.exec(listOfZipCodes) === null) {
console.log('validation failed');
return false;
} else {
console.log('validation passed');
return true;
}
}
La regex est correctement détecter un valide/invalide la liste de codes postaux.
Je suis l'appel de la fonction:
console.log('zip code: ' + listOfZipCodes);
if (ValidateZipCodeString(listOfZipCodes)) {
$tr.find('label#lblCoverageEditError').text('There is invalid text in the list of zip codes. Only 5-digit zip codes allowed.').show();
} else {
console.log('validate function returned true');
}
Le problème est que si/d'autre va à la clause else, lors de la sortie de la console à l'intérieur de la fonction de validation affiche "échec de la validation". Donc je ne dois pas être en appelant cette fonction droite.
Quelle est la façon correcte de faire ce que je suis en train de faire?
J'ai juste essayé ton script avec une chaîne de test de
Vous faire comprendre que
'43636, 34643'
et cela a fonctionné? Je ne suis pas sûr de ce que vous rencontrez des problèmes avec...Vous faire comprendre que
"111111111111111"
sera considérée comme valide, droit? Comme ", , , , , ,,, 111111111111111,,,,,,,"
OriginalL'auteur marky | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
Votre fonction pourrait être grandement simplifiée:
...ou:
...ou même juste:
...mais le vrai problème (comme Teemu souligne) n'est pas dans votre fonction, mais dans l'utilisation de l'informatique. Votre fonction répond à la question, "Est-ce un code postal valide chaîne?", mais l'utilisation qui en est dit, "Dire que ce n'est pas valide si ma fonction, dit-il."
false
deregex.exec(listOfZipCodes) === null
donnerait le même résultat.Grâce Grinn. Qui ont travaillé. Personnellement j'ai bien aimé votre "ou tout simplement" code avant que vous l'avez édité (plus lisible).
En fait, @Teemu est (et doit être marqué en tant que tel.) Vous êtes juste en utilisant votre fonction tort quand vous l'appelez. Je vais mettre à jour ma réponse à cette remarque, mais s'il vous plaît ne marque son comme la réponse - car il l'a mentionné en premier.
OriginalL'auteur Grinn
Effectivement de validation de fonction ne retourne pas
true
, lors de la validation échoue. Vous venez de vérifier la valeur de manière incorrecte, il convient de:OriginalL'auteur Teemu
D'autres, a souligné à juste titre que vous venez d'avoir vos tests dans le mauvais ordre. Cependant, et plus important encore, votre regex est incorrect, par exemple, retourner true pour "1234567890".
Voici une suggestion:
\s*
avant et après la,
pour permettre d'espace blanc rembourrage. Mais +1, à partir de l'expression régulière doit clairement être fixe.de sens, merci!
Merci, Christophe & le système. Je suis horrible à la compréhension de l'expression rationnelle.
OriginalL'auteur Christophe