J'ai une zone de texte et les utilisateurs saisissent na plutôt que de fournir les données spécifiées. Comment peut-on explicitement ne pas leur permettre d'entrer na sur le terrain? Je veux utiliser un regularexpressionvalidator asp.Expression régulière ne permettant pas aux utilisateurs d'entrer NA ou N/A ou na ou n/a
Répondre
Pourquoi utiliser regex pour résoudre ce problème lorsque vous pouvez le résoudre avec une simple instruction if?
if (input.ToLower().Trim() != "na" && input.ToLower().Trim() != "n/a")
{
// Continue processing
}
Option valide mais la regex est la solution choisie car elle utilise regularexpressionvalidator dans ASP.NET. Ce n'est vraiment pas la réponse à la question –
Ryan fait un bon point - mais si vous êtes mort situé sur l'utilisation regex, cela devrait faire l'affaire (assurez-vous marquer comme insensible à la casse):
^n\/?a$
Cela correspond également maïs/anonyme –
Droit, whoops - merci pour le heads-up. J'ai ajouté des marqueurs de début/fin au motif. – girasquid
^(?!\s*n\s*/?\s*a\s*$).*
va correspondre (et retourner la chaîne d'entrée) si l'utilisateur entre quoi que ce soit sauf n/a
et échouera autrement. Toutes les variations de vos questions sont couvertes si vous sélectionnez la correspondance insensible à la casse (dans .NET, ceci est fait en utilisant l'option RegexOptions.IgnoreCase
). En outre, toute quantité d'espace sera ignorée, de sorte que l'utilisateur ne peut pas simplement taper n/ a
.
Problème ici est que cela correspond également maïs/anonyme –
@Ryan Pedersen: Comment est-ce un problème? Il est censé correspondre à tout sauf 'n/a', donc le maïs/anonyme est un match légal. –
AFAIK, RegularExpressionValidator n'accepte pas les arguments RegexOptions comme le font les constructeurs Regex. Vous devrez utiliser le modificateur inline, '(? I)', mais votre validateur ne pourra alors s'exécuter que sur le serveur; JavaScript ne prend pas en charge les modificateurs en ligne. –
Insensibilité à la casse peut être basculée par i: jeton, donc le regex résultant peut être comme ça:
(?i:^n\/a$)
Mise à jour: parenthèses ajouté après le commentaire d'Alan.
ce n'est pas une regex valide pour asp.net. Quand je le mets dans une page web en utilisant RegularExpressionValidator, j'obtiens l'erreur suivante: analyser "? I:^n \/a $" - Quantifier {x, y} après rien. –
La syntaxe correcte pour les modificateurs en ligne est '(? I:^n/a $)' ou '(? I)^n/a $', mais voir mon commentaire sur la réponse de Tim à propos de leur utilisation. (De plus, '/' n'a pas de signification particulière dans les regexes, il a seulement besoin d'être échappé s'il est utilisé comme regex * delimiter *, mais ce n'est pas un problème dans .NET.) –
Vous ne pouvez pas faire cela avec RegularExpressionValidator, car il se produira une erreur lorsque le motif ne correspond pas. Il n'y a aucun moyen d'inverser le RegularExpressionValidator pour donner une condition d'erreur lorsque le modèle est mis en correspondance.
Vous pouvez utiliser un CustomValidator pour cela et 4 Guys From Rolla wrote an tutorial on how to do this il y a quelque temps ou vous pouvez obtenir des validateurs de 3ème partie comme ceux de Peter Blum.
Avant d'investir beaucoup de temps, vous devriez considérer le commentaire de @bemace. Si vous implémentez cela, vous obtiendrez seulement un nouveau type de "garbage in" au lieu de n/a.
- 1. Importation RODBC pour conserver "NA"
- 2. Réinsertion des NA dans un vecteur
- 3. Gestion des valeurs NA dans apply et unique
- 4. Expression régulière pour remplacer les champs délimités par des virgules vides par "NA"
- 5. Niveaux non présents lors de la manipulation 1,0, NA
- 6. Afficher une seule ligne pour chaque valeur NA
- 7. En utilisant read.csv, les champs vides ont NA ajouté à data.frame
- 8. Choix d'une ligne basée sur des correspondances et NA dans un champ différent
- 9. Remplacement des valeurs de caractères par NA dans une trame de données
- 10. Expression régulière - quelle est mon erreur?
- 11. Regex pour transformer/01/02/007/... en 01/02 et/01 en 01/NA - est-ce possible?
- 12. Expression régulière ou opérateur
- 13. OU en expression régulière?
- 14. Exclusif ou en expression régulière
- 15. Traitement des données manquantes/incomplètes dans R - Y a-t-il une fonction pour masquer mais pas pour supprimer les NA?
- 16. Affecter des indices au niveau du groupe pendant ou après la fonte
- 17. Test d'expression régulière Perl vide ou expression
- 18. Conversion d'une série chronologique irrégulière en série chronologique régulière
- 19. Expression régulière, référence arrière ou construction alternative
- 20. Expression régulière pour décimal ou blanc
- 21. Une expression régulière sur le nom du dossier
- 22. Python (ou numpy) équivalent de correspondance dans R
- 23. Pop up message aux utilisateurs dans OU
- 24. PHP.ini redéfinissant/ne permettant pas les directives set_ini ou set_include_path
- 25. Expression régulière qui correspond à tout numéro ou une lettre ou Dash
- 26. Expression régulière PHP pour correspondre au prix ou au montant
- 27. Pour utiliser ou ne pas utiliser les expressions régulières?
- 28. Expression régulière pour autoriser la plage de nombres, ou null
- 29. expression régulière: un modèle avant ou après un symbole
- 30. Expression régulière: 0-9 AZ az ou l'un de ces * + -/=^_ `{|} ~
Si le champ a un format spécifique (numéros de téléphone, dates), vérifiez que l'entrée correspond à ce format. Sinon, rejeter N/A les amènera à entrer dans une autre poubelle. Aucun regex ne fera que les gens vous donnent des informations qu'ils ne veulent pas donner. –