Pass variable de modèle d'expression régulière chaîne en jquery
Est-ce possible de passer des variables dans le modèle d'expression régulière chaîne en jquery ( ou javascript)? Par exemple, je veux valider un code postal champ de saisie chaque fois que l'utilisateur de saisir un caractère en passant la variable i pour le modèle d'expression régulière. Comment le faire correctement?
$('#zip').keyup( function(){
var i=$('#zip').val().length
for ( i; i<=5; i++){
var pattern=/^[0-9]{i}$/;
if ( !pattern.test( $('#zip').val() ) )
{$('#zip_error').css('display','inline');}
else
{$('#zip_error').css('display','none');}
}
})
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez, à l'aide de la
RegExp
constructeur:Mais... en regardant ton code semble que vous voulez vous assurer que la zone de texte contient seulement les numéros de, pour cela vous pouvez utiliser une simple regex comme ceci:
Le schéma ci-dessus ne correspondent à une chaîne composée par des numéros, il va chercher:
^
[0-9]
+
$
Pour répondre à votre question, vous utilisez le constructeur Regexp, de sorte que vous pouvez utiliser une chaîne de caractères pour le modèle:
Cependant, le code n'a pas vraiment de sens. Comme vous le changer de style à chaque itération de la boucle, seul le résultat de la dernière itération va apparaître.
Si vous voulez vérifier que la valeur ne contient que des chiffres, et est d'au moins cinq caractères, vous pouvez simplement spécifier que dans le modèle:
Expression régulière contenu:
"^[0-9]{"
, le contenu dei
et"}$"
. Sii
contient 1, le résultat est"^[0-9]{1}$"
.Votre pour la boucle semble plutôt suspect:
var i = $('#zip').val().longueur;
for (i; i<=5; i++)
{
}
Pourquoi voulez-vous commencer après la fin de la chaîne?
Ne vous veux?: