2010-10-09 11 views
-3

Comment puis-je écrire une expression régulière qui n'accepte que la valeur « 1 » dans la zone de texte et il ne doit pas accepter zéro ou Greter que « 1 »Comment écrire cette expression régulière

+2

Pourquoi avoir une zone de texte si elle ne peut accepter qu'une seule valeur? Pourquoi pas une case à cocher? –

+0

Pourquoi diable utiliseriez-vous une regex pour cela? Mis à part la complexité associée à l'écriture réelle de la regex, invoquer le moteur regex est incroyablement cher par rapport à une simple comparaison d'entiers dans n'importe quelle langue ... –

Répondre

2
/^1$/ 

... mais pour un "Doit être cette valeur, exactement cette valeur, et rien que cette valeur" test, vous seriez beaucoup mieux avec une simple comparaison de chaîne.

+0

Comment ajouter ceci à celui existant^[0-9 \] + $ à ceci et forment l'expression/^ 1 $/ – Someone

+0

Il y a un problème Mais je ne peux pas expliquer et il est résolu maintenant – Someone

8
if (theTextBoxValue == "1") { 
    // accept 
} else { 
    // reject 
} 

Vous n'avez pas besoin de regex pour cette tâche simple. Et, si vous n'acceptez que "1" dans une entrée utilisateur, pourquoi fournir une telle entrée à l'utilisateur?

1

/^1$/ mais un simple == "1" suffira dans la plupart des langues (ou .equals("1")).

0

Ne pensez pas que vous voulez utiliser regex pour cela.

Motif: ^1$

1

j'ai vu votre question précédente (en utilisant le jquery validationEngine), et j'intriguait donc je commencé à regarder. Le problème avec l'utilisation d'un funcCall (comme vous essayiez dans l'ancien post) est que la fonction est appelée sans aucun contexte (n'a pas d'arguments, et a cette fenêtre ==), donc vous ne pouvez pas dire quelle entrée le champ est en cours de validation. (J'ai résolu ceci avec un tour - voir l'exemple & commentaires liés ci-dessous).

Une autre solution que j'ai trouvée utilisait regex (comme vous essayez maintenant). Ceci est l'entrée que vous devez ajouter au fichier des langues:

"isOne":{ 
     "regex":"/^1$/", 
     "alertText":"* Only '1' is valid [regex]" 
    } 

Voici comment vous l'utilisez sur le champ de saisie:

<input type="text" class="validate[custom[isOne]]"> 

Et voici comment vous démarrez le moteur de validation:

$('#form').validationEngine({ 
    validationEventTriggers:"change" 
}); 

Vous pouvez voir un exemple de travail en utilisant la fonction et regex here

+0

Au moins vous comprenez mon problème Donc j'ai opté pour Regex et ai pu le résoudre easliy – Someone

Questions connexes